home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / inter45c / interrup.i < prev    next >
Encoding:
Text File  |  1995-03-26  |  326.0 KB  |  9,011 lines

  1. Interrupt List, part 9 of 12
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------N-2FFE00BX4454-----------------------
  4. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  5.     AX = FE00h
  6.     BX = 4454h ("DT")
  7.     CX = 4B52h ("KR")
  8.     DX = 4E4Dh ("NM")
  9. Return: AL = FFh if installed
  10.        BX = 524Eh ("RM")
  11.        CX = 4D44h ("MD")
  12.        DX = 544Bh ("TK")
  13. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  14. SeeAlso: AX=FE08h
  15. --------N-2FFE00BX4454-----------------------
  16. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  17.     AX = FE00h
  18.     BX = 4454h ("DT")
  19.     CX = 4B52h ("KR")
  20.     DX = 544Dh ("TM")
  21. Return: AL = FFh if installed
  22.        BX = 5254h ("RT")
  23.        CX = 4D44h ("MD")
  24.        DX = 544Bh ("TK")
  25. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  26. SeeAlso: AX=FE08h
  27. --------U-2FFE00DI4E55-----------------------
  28. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  29.     AX = FE00h
  30.     DI = 4E55h ("NU")
  31.     SI = TSR identifier (see #1807)
  32. Return: SI = TSR reply
  33.         lowercase version of SI on entry (i.e. SI OR 2020h)
  34.     AH = status
  35.         00h installed but disabled internally
  36.         01h installed and enabled
  37.     AL = installed product
  38.         00h NCACHE-x or DISKREET
  39.         01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
  40.         02h NCACHE2 / SMARTCAN
  41.         45h DISKMON v5 installed
  42.     BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
  43.           (see #1808,#1809)
  44.     CX = segment of resident portion
  45.         FFFFh if completely loaded high (NCACHE)
  46. ---FILESAVE/EP---
  47.     DL = ??? (apparently always 00h)
  48. ---DISKMON---
  49.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
  50. Notes:    the value returned in CX is incorrect for NCACHE 6.00
  51.     all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
  52.     NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
  53.     to detect Diskreet NDisk drives use CDS/DPB (see INT 21/AH=52h)
  54. SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  55. SeeAlso: INT 21/AX=4402h"SMARTDRV"
  56.  
  57. (Table 1807)
  58. Values for Norton Utilities TSR identifier:
  59.  4346h    ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7+) / SPEEDRV
  60.  4353h    ("CS") NCACHE-S (v5 only)
  61.  4443h    ("DC") DISKREET
  62.  444Dh    ("DM") DISKMON
  63.  4653h    ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7+)
  64.  
  65. Format of DISKMON.INI file:
  66. Offset    Size    Description    (Table 1808)
  67. -6Ch 108 BYTEs    (in memory copy only)
  68.         list of filenames which are always protected:
  69.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  70.           MIO.SYS/IO.BIN, COMMAND.COM
  71.  00h    BYTE    ??? always 01h
  72.  01h    BYTE    disk light (00h off, 01h on)
  73.  02h    BYTE    disk protection (00h off, 01h on)
  74.  03h    BYTE    protected areas
  75.         01h system area
  76.         02h files
  77.         03h system area and files
  78.         04h entire disk
  79.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  80.  05h 27 BYTEs    filename extension list (9 entries)
  81.         (lowercase, blank padded or = 000000h)
  82.  20h 240 BYTEs    filename list (20 entries)
  83.         (lowercase, name and extension blank padded, with '.')
  84. Note:    CX:0508h -> copy in installed TSR (v5)
  85.     CX:052Fh -> copy in installed TSR (v6)
  86.     CX:04E0h -> copy in installed TSR (v7-v8)
  87.  
  88. Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
  89. Offset    Size    Description    (Table 1809)
  90.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  91.  00h    BYTE    drives    A: - H:
  92.  01h    BYTE    drives    I: - P:
  93.  02h    BYTE    drives    Q: - X:
  94.  03h    BYTE    drives    Y: - Z:
  95.  04h    BYTE    which files to protect
  96.         00h all files
  97.         01h all files with extension in list
  98.         02h all files except those with extension in list
  99.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  100.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  101.  21h    WORD    number of days after which files are purged (0 = never)
  102.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  103. Note:    CX:03D2h -> copy in installed TSR (v5)
  104.     CX:03F5h -> copy in installed TSR (v6)
  105.     CX:0434h -> copy in installed TSR (v7-v8)
  106. --------U-2FFE01DI4E55-----------------------
  107. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  108.     AX = FE01h
  109.     DI = 4E55h ("NU")
  110.     SI = TSR identifier (see #1807)
  111. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  112.     AX = status
  113.         0002h successful (DISKMON, FILESAVE, EP)
  114.         FE00h successful (NCACHE-x, DISKREET)
  115. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  116.       report generated by the programs still indicates the previous state,
  117.       and DISKMON.INI is not updated
  118.     apparently has no effect on DISKREET
  119. SeeAlso: AX=FE00h,AX=FE02h
  120. --------U-2FFE02DI4E55-----------------------
  121. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  122.     AX = FE02h
  123.     DI = 4E55h ("NU")
  124.     SI = TSR identifier (see #1807)
  125. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  126.     AX = status
  127.         0004h successful (DISKMON, FILESAVE)
  128.         FE00h successful (NCACHE-x, DISKREET)
  129. Notes:    (see also AX=FE01h)
  130.     this function appears to be unsafe, as the cache buffers are not
  131.       flushed
  132. SeeAlso: AX=FE00h,AX=FE01h
  133. --------U-2FFE03DI4E55-----------------------
  134. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  135.     AX = FE03h
  136.     DI = 4E55h ("NU")
  137.     SI = TSR identifier (see #1807)
  138. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  139.     AX = status
  140.         0006h successful???
  141. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  142.     useful for flushing NCACHE before rebooting
  143. SeeAlso: AX=FE00h,AX=FE10h
  144. --------U-2FFE04DI4E55-----------------------
  145. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  146.     AX = FE04h
  147.     DI = 4E55h ("NU")
  148.     SI = TSR identifier (see #1807)
  149. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  150.     AX = status
  151.         0008h successful???
  152. SeeAlso: AX=FE00h
  153. --------U-2FFE05DI4E55-----------------------
  154. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  155.     AX = FE05h
  156.     DI = 4E55h ("NU")
  157.     SI = TSR identifier (see #1807)
  158. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  159.     AX = status
  160.         000Ah successful???
  161. Note:    reportedly dangerous
  162. SeeAlso: AX=FE00h
  163. --------N-2FFE08-----------------------------
  164. INT 2F - PC-NFS ??? - GET ???
  165.     AX = FE08h
  166. Return: ES:BX -> ???
  167. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  168.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  169.       to AX=FE00h/DX=544Dh support this function
  170. SeeAlso: AX=FE00h/BX=4454h
  171. --------U-2FFE10DI4E55-----------------------
  172. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  173.     AX = FE10h
  174.     DI = 4E55h ("NU")
  175.     SI = TSR identifier (see #1807)
  176. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  177.     AX = status
  178. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  179.       detected
  180. SeeAlso: AX=FE03h
  181. --------S-2FFEEF-----------------------------
  182. INT 2F - RTS Control TSR - INSTALLATION CHECK
  183.     AX = FEEFh
  184. Return: AX = EFFEh if installed
  185.         BX = port address
  186. Program: RTS Control TSR is a utility by Michal Szokolo to lower the RTS
  187.       signal on a COM port during disk accesses to avoid losing incoming
  188.       data
  189. --------N-2FFF00-----------------------------
  190. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  191.     AX = FF00h
  192. Return: AL = status
  193.         00h not installed, OK to install
  194.         01h not installed, not OK to install
  195.         FFh installed
  196. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF00h"Topware",INT 7A"Topware"
  197. --------N-2FFF01-----------------------------
  198. INT 2F - Topware Network Operating System - GET VERSION
  199.     AX = FF01h
  200. Return: AX = version
  201. SeeAlso: AX=FF00h,AX=FF02h
  202. --------N-2FFF02-----------------------------
  203. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  204.     AX = FF02h
  205. Return: ES:BX -> version string
  206. SeeAlso: AX=FF00h,AX=FF01h
  207. --------N-2FFF10-----------------------------
  208. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  209.     AX = FF10h
  210. Return: AL = status (00h not installed, 01h installed)
  211. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  212. --------N-2FFF11-----------------------------
  213. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  214.     AX = FF11h
  215. Note:    this function is only available on workstations, not on the server
  216. SeeAlso: AX=FF10h,AX=FF12h
  217. --------N-2FFF12-----------------------------
  218. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  219.     AX = FF12h
  220. Note:    this function is only available on workstations, not on the server
  221. SeeAlso: AX=FF10h,AX=FF11h
  222. --------N-2FFF13-----------------------------
  223. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  224.     AX = FF13h
  225.     CL = new state (00h off, 01h on)
  226. SeeAlso: AX=FF10h
  227. --------N-2FFF14-----------------------------
  228. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  229.     AX = FF14h
  230. Note:    this function is only available on workstations, not on the server
  231. SeeAlso: AX=FF10h,AX=FF15h
  232. --------N-2FFF15-----------------------------
  233. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  234.     AX = FF15h
  235. Note:    this function is only available on workstations, not on the server
  236. SeeAlso: AX=FF10h,AX=FF14h
  237. --------N-2FFF16-----------------------------
  238. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  239.     AX = FF16h
  240.     BL = which to set (00h TopShow, FFh TopTerm)
  241.     CX = destination screen
  242.         0000h all stations
  243.         0000h-00FFh (TopTerm only) send to group CL
  244.         8001h-80FEh send to station CL
  245. SeeAlso: AX=FF18h
  246. --------N-2FFF18-----------------------------
  247. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  248.     AX = FF18h
  249. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  250. --------N-2FFF23-----------------------------
  251. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  252.     AX = FF23h
  253. SeeAlso: AX=FF00h
  254. --------N-2FFF27-----------------------------
  255. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  256.     AX = FF27h
  257. Return: AL = type (00h complete version, 01h simple version)
  258.     BL = "show" functions flag (00h disabled, 01h enabled)
  259. SeeAlso: AX=FF16h,AX=FF18h
  260. --------D-30---------------------------------
  261. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  262.    the CALL 5 entry point does a FAR jump to here
  263. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  264.       memory
  265. SeeAlso: INT 21/AH=26h
  266. --------V-30---------------------------------
  267. INT 30 - QRIP/TSR - USED BY GRAPHICS LIBRARY
  268. Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
  269.       Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
  270.       provide a graphical user interface
  271. SeeAlso: INT 2F/AX=ACF0h
  272. --------D-31---------------------------------
  273. INT 31 - overwritten by CP/M jump instruction in INT 30
  274. --------v-31---------------------------------
  275. INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
  276. Note:    if one of the Vacsina viruses is resident, the low byte of this
  277.       interrupt still contains the last byte of the INT 30 CP/M JMP
  278.       instruction, but the remaining three bytes are 7Fh 39h followed
  279.       by the Vacsina version number
  280. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
  281. --------E-310000-----------------------------
  282. INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
  283.     AX = 0000h
  284.     CX = number of descriptors to allocate
  285. Return: CF clear if successful
  286.         AX = base selector
  287.     CF set on error
  288.         AX = error code (DPMI 1.0+) (see #1810)
  289. Notes:    DPMI is the DOS Protected-Mode Interface
  290.     the base and limit of the returned descriptors will be 0, and the type
  291.       will be "data"
  292.     add the value returned by INT 31/AX=0003h to move to subsequent
  293.       descriptors if multiple descriptors were allocated
  294.     not supported by MS Windows 3.0 in Standard mode
  295. SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
  296.  
  297. (Table 1810)
  298. Values for DPMI 1.0 error code:
  299.  0000h-7FFFh DOS error passed through by DPMI
  300.  8001h    unsupported function
  301.  8002h    object in wrong state for function
  302.  8003h    system integrity would be endangered
  303.  8004h    deadlock detected
  304.  8005h    pending serialization request cancelled
  305.  8010h    out of DPMI internal resources
  306.  8011h    descriptor unavailable
  307.  8012h    linear memory unavailable
  308.  8013h    physical memory unavailable
  309.  8014h    backing store unavailable
  310.  8015h    callback unavailable
  311.  8016h    handle unavailable
  312.  8017h    maximum lock count exceeded
  313.  8018h    shared memory already serialized exclusively by another
  314.  8019h    shared memory already serialized shared by another client
  315.  8021h    invalid value for numeric or flag parameter
  316.  8022h    invalid segment selector
  317.  8023h    invalid handle
  318.  8024h    invalid callback
  319.  8025h    invalid linear address
  320.  8026h    request not supported by hardware
  321. --------E-310001-----------------------------
  322. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  323.     AX = 0001h
  324.     BX = selector to free
  325. Return: CF clear if successful
  326.     CF set on error
  327.         AX = error code (DPMI 1.0+) (8022h) (see #1810)
  328. Notes:    only one descriptor is freed per call
  329.     the program's initial CS, DS, and SS descriptors may be freed
  330.     (DPMI 1.0+) any segment registers containing the freed selector are
  331.       set to 0000h
  332.     not supported by MS Windows 3.0 in Standard mode
  333. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  334. --------E-310002-----------------------------
  335. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  336.     AX = 0002h
  337.     BX = real mode segment
  338. Return: CF clear if successful
  339.         AX = selector corresponding to real mode segment (64K limit)
  340.     CF set on error
  341.         AX = error code (DPMI 1.0+) (8011h) (see #1810)
  342. Notes:    multiple calls for the same real mode segment return the same selector
  343.     the returned descriptor can never be modified or freed
  344.     not supported by MS Windows 3.0 in Standard mode
  345. --------E-310003-----------------------------
  346. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  347.     AX = 0003h
  348. Return: CF clear
  349.         AX = value to add to get next sequential selector
  350. Notes:    the increment will be a power of two
  351.     not supported by MS Windows 3.0 in Standard mode
  352. SeeAlso: AX=0000h
  353. --------E-310004-----------------------------
  354. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  355.     AX = 0004h
  356.     BX = selector to lock (prevent paging)
  357. Return: ???
  358. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  359.       specification, this function is called by MS Windows TASKMAN,
  360.       PROGMAN, and KERNEL
  361. SeeAlso: AX=0005h,AX=0600h
  362. --------E-310005-----------------------------
  363. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  364.     AX = 0005h
  365.     BX = selector to unlock (permit paging)
  366. Return: ???
  367. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  368.       specification, this function is called by MS Windows TASKMAN,
  369.       PROGMAN, and KERNEL
  370. SeeAlso: AX=0004h,AX=0601h
  371. --------E-310006-----------------------------
  372. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  373.     AX = 0006h
  374.     BX = selector
  375. Return: CF clear if successful
  376.         CX:DX = linear base address of segment
  377.     CF set on error
  378.         AX = error code (DPMI 1.0+) (8022h) (see #1810)
  379. Note:    not supported by MS Windows 3.0 in Standard mode
  380. SeeAlso: AX=0007h,INT 21/AX=3504h
  381. --------E-310007-----------------------------
  382. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  383.     AX = 0007h
  384.     BX = selector
  385.     CX:DX = linear base address
  386. Return: CF clear if successful
  387.     CF set on error
  388.         AX = error code (DPMI 1.0+) (8022h,8025h) (see #1810)
  389. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  390.     only the low 24 bits of the address will be used by 16-bit DPMI
  391.       implementations even on a 386 or higher
  392.     DPMI 1.0+ automatically reloads any segment registers containing the
  393.       selector being modified
  394.     not supported by MS Windows 3.0 in Standard mode
  395. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  396. SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
  397. --------E-310008-----------------------------
  398. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  399.     AX = 0008h
  400.     BX = selector
  401.     CX:DX = segment limit
  402. Return: CF clear if successful
  403.     CF set on error
  404.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1810)
  405. Notes:    CX must be zero for 16-bit DPMI implementations
  406.     limits greater than 1MB must be page aligned (low 12 bits set)
  407.     only modify descriptors allocated with INT 31/AX=0000h
  408.     DPMI 1.0+ automatically reloads any segment registers containing the
  409.       selector being modified
  410.     not supported by MS Windows 3.0 in Standard mode
  411. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  412. SeeAlso: INT 2C/AX=0003h,#0377 at INT 15/AH=89h
  413. --------E-310009-----------------------------
  414. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  415.     AX = 0009h
  416.     BX = selector
  417.     CL = access rights/type byte (see #0378 at INT 15/AH=89h)
  418.     CH = 80386 extended rights/type byte (see #0379 at INT 15/AH=89h)
  419.         (32-bit DPMI implementations only)
  420. Return: CF clear if successful
  421.     CF set on error
  422.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1810)
  423. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  424.     DPMI 1.0+ automatically reloads any segment registers containing the
  425.       selector being modified
  426.     not supported by MS Windows 3.0 in Standard mode
  427. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
  428. SeeAlso: INT 2C/AX=0005h
  429. --------E-31000A-----------------------------
  430. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  431.     AX = 000Ah
  432.     BX = selector
  433. Return: CF clear if successful
  434.         AX = new data selector
  435.     CF set on error
  436.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #1810)
  437. Notes:    fails if selector in BX is not a code segment or is invalid
  438.     use INT 31/AX=0001h to free new selector
  439.     future changes to the original selector will not be reflected in the
  440.       returned alias selector
  441.     not supported by MS Windows 3.0 in Standard mode
  442. SeeAlso: AX=0001h
  443. --------E-31000B-----------------------------
  444. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  445.     AX = 000Bh
  446.     BX = LDT selector
  447.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  448. Return: CF clear if successful
  449.         buffer filled
  450.     CF set on error
  451.         AX = error code (DPMI 1.0+) (8022h) (see #1810)
  452. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  453.     not supported by MS Windows 3.0 in Standard mode
  454. SeeAlso: AX=000Ch
  455. --------E-31000C-----------------------------
  456. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  457.     AX = 000Ch
  458.     BX = LDT selector
  459.     ES:(E)DI -> 8-byte buffer containing descriptor
  460. Return: CF clear if successful
  461.     CF set on error
  462.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1810)
  463. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  464.     only modify descriptors allocated with INT 31/AX=0000h
  465.     DPMI 1.0+ automatically reloads any segment registers containing the
  466.       selector being modified
  467.     not supported by MS Windows 3.0 in Standard mode
  468. SeeAlso: AX=000Bh
  469. --------E-31000D-----------------------------
  470. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  471.     AX = 000Dh
  472.     BX = LDT selector
  473. Return: CF clear if successful
  474.         descriptor allocated
  475.     CF set on error
  476.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #1810)
  477. Notes:    free descriptor with INT 31/AX=0001h
  478.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  479.       some may already be in use by other applications under DPMI 0.9;
  480.       DPMI 1.0 guarantees 16 descriptors per client
  481.     not supported by MS Windows 3.0 in Standard mode
  482. SeeAlso: AX=0000h,AX=0001h
  483. --------E-31000E-----------------------------
  484. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  485.     AX = 000Eh
  486.     CX = number of descriptors to copy
  487.     ES:(E)DI -> descriptor buffer (see #1811)
  488. Return: CF clear if successful
  489.         descriptors copied
  490.     CF set on error
  491.         AX = error code (8022h) (see #1810)
  492.         CX = number of descriptors successfully copied
  493. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  494.     if the function fails, the first CX descriptors are valid; the
  495.       remainder are not modified
  496. SeeAlso: AX=000Bh,AX=000Fh
  497.  
  498. Format of DPMI descriptor buffer entry (one per descriptor to get):
  499. Offset    Size    Description    (Table 1811)
  500.  00h    WORD    selector (set by client)
  501.  02h    QWORD    descriptor (set by host)
  502. --------E-31000F-----------------------------
  503. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  504.     AX = 000Fh
  505.     CX = number of descriptors to copy
  506.     ES:(E)DI -> descriptor buffer (see #1812)
  507. Return: CF clear if successful
  508.         descriptors copied
  509.     CF set on error
  510.         AX = error code (8021h,8022h,8025h) (see #1810)
  511.         CX = number of descriptors successfully copied
  512. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  513.     if the function fails, the first CX descriptors are valid; the
  514.       remainder are not modified
  515.     DPMI 1.0+ automatically reloads any segment registers containing a
  516.       selector being modified
  517. SeeAlso: AX=000Ch,AX=000Eh
  518.  
  519. Format of DPMI descriptor buffer entry (one per descriptor to set):
  520. Offset    Size    Description    (Table 1812)
  521.  00h    WORD    selector
  522.  02h    QWORD    descriptor
  523. --------E-310100-----------------------------
  524. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  525.     AX = 0100h
  526.     BX = number of paragraphs to allocate
  527. Return: CF clear if successful
  528.         AX = real mode segment of allocated block
  529.         DX = first selector for allocated block
  530.     CF set on error
  531.         AX = DOS error code (07h,08h) (see #0885 at INT 21/AH=59h)
  532.         (DPMI 1.0+) DPMI error code (8011h) (see #1810)
  533.         BX = size (in paragraphs) of largest available block
  534. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  535.       if the caller is a 16-bit program
  536.     never modify or deallocate returned descriptors
  537.     not supported by MS Windows 3.0 in Standard mode
  538. SeeAlso: AX=0101h,AX=0501h
  539. --------E-310101-----------------------------
  540. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  541.     AX = 0101h
  542.     DX = selector of block
  543. Return: CF set if successful
  544.     CF set on error
  545.         AX = DOS error code (07h,09h) (see #0885 at INT 21/AH=59h)
  546. Notes:    all descriptors allocated for the block are automatically freed
  547.     DPMI 1.0+ automatically zeros any segment registers containing a
  548.       selector freed by this function
  549.     not supported by MS Windows 3.0 in Standard mode
  550. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  551. --------E-310102-----------------------------
  552. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  553.     AX = 0102h
  554.     BX = new block size in paragraphs
  555.     DX = selector of block
  556. Return: CF clear if successful
  557.     CF set on error
  558.         AX = DOS error code (07h,08h,09h) (see #0885 at INT 21/AH=59h)
  559.         (DPMI 1.0+) DPMI error code (8011h,8022h) (see #1810)
  560.         BX = maximum block size (in paragraphs) possible
  561. Notes:    increasing the size of a block past a 64K boundary will fail if the
  562.       next descriptor in the LDT is already in use
  563.     shrinking a block past a 64K boundary will cause some selectors to be
  564.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  565.       a selector freed by this function
  566.     not supported by MS Windows 3.0 in Standard mode
  567. SeeAlso: AX=0100h
  568. --------E-310200-----------------------------
  569. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  570.     AX = 0200h
  571.     BL = interrupt number
  572. Return: CF clear
  573.     CX:DX = segment:offset of real mode interrupt handler
  574. Note:    the DPMI implementation is required to support all 256 vectors
  575. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  576. --------E-310201-----------------------------
  577. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  578.     AX = 0201h
  579.     BL = interrupt number
  580.     CX:DX = segment:offset of real mode handler
  581. Return: CF clear
  582. Note:    all memory that may be touched by a hardware interrupt handler must be
  583.       locked down with INT 31/AX=0600h
  584. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  585. --------E-310202-----------------------------
  586. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  587.     AX = 0202h
  588.     BL = exception number (00h-1Fh)
  589. Return: CF clear if successful
  590.         CX:(E)DX = selector:offset of handler
  591.     CF set on error
  592.         AX = error code (DPMI 1.0+) (8021h) (see #1810)
  593. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  594.     DPMI 1.0+ supports this function only for backward compatibility; use
  595.        AX=0210h or AX=0211h instead
  596.     not supported by MS Windows 3.0 in Standard mode
  597. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  598. --------E-310203-----------------------------
  599. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  600.     AX = 0203h
  601.     BL = exception number (00h-1Fh)
  602.     CX:(E)DX = selector:offset of handler
  603. Return: CF clear if successful
  604.     CF set on error
  605.         AX = error code (DPMI 1.0+) (8021h,8022h) (see #1810)
  606. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  607.       stack frame on chaining to the next exception handler
  608.     the handler should return using a FAR return
  609.     all fault stack frames contain an error code, but it is only valid for
  610.       exceptions 08h and 0Ah-0Eh
  611.     handlers will only be called if the exception occurs in protected mode,
  612.       and the DPMI host does not transparently handle the exception
  613.     the handler may change certain values on the stack frame
  614.       (see #1813,#1814)
  615.     DPMI 1.0+ supports this function only for backward compatibility; use
  616.        AX=0212h or AX=0213h instead
  617.     not supported by MS Windows 3.0 in Standard mode
  618. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  619.  
  620. Format of stack frame for 16-bit programs: (offset from SS:SP)
  621. Offset    Size    Description    (Table 1813)
  622.  00h    DWORD    return CS:IP (do not change)
  623.  04h    WORD    error code
  624.  06h    DWORD    CS:IP of exception
  625.  0Ah    WORD    flags
  626.  0Ch    DWORD    SS:SP
  627.  
  628. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  629. Offset    Size    Description    (Table 1814)
  630.  00h    DWORD    return EIP (do not change)
  631.  04h    WORD    return CS selector (do not change)
  632.  06h    WORD    reserved (do not change)
  633.  08h    DWORD    error code
  634.  0Ch    DWORD    EIP of exception
  635.  10h    WORD    CS selector of exception
  636.  12h    WORD    reserved (do not change)
  637.  14h    DWORD    EFLAGS
  638.  18h    DWORD    ESP
  639.  1Ch    WORD    SS
  640.  1Eh    WORD    reserved (do not change)
  641. --------E-310204-----------------------------
  642. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  643.     AX = 0204h
  644.     BL = interrupt number
  645. Return: CF clear
  646.     CX:(E)DX = selector:offset of handler
  647. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  648.     DPMI implementations are required to support all 256 vectors
  649.     not supported by MS Windows 3.0 in Standard mode
  650. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
  651. SeeAlso: INT 2F/AX=FB42h/BX=0024h
  652. --------E-310205-----------------------------
  653. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  654.     AX = 0205h
  655.     BL = interrupt number
  656.     CX:(E)DX = selector:offset of handler
  657. Return: CF clear if successful
  658.     CF set on error
  659.         AX = error code (DPMI 1.0+) (8022h) (see #1810)
  660. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  661.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  662.       to the next handler
  663.     DPMI implementations are required to support all 256 vectors
  664.     hardware interrupts are reflected to the virtual machine's primary
  665.       client, software interrupts to the current client
  666.     not supported by MS Windows 3.0 in Standard mode
  667. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
  668. SeeAlso: INT 2F/AX=FB42h/BX=0025h
  669. --------E-310210-----------------------------
  670. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  671.     AX = 0210h
  672.     BL = exception number (00h-1Fh)
  673. Return: CF clear if successful
  674.         CX:(E)DX = selector:offset of exception handler
  675.     CF set on error
  676.         AX = error code (8021h) (see #1810)
  677. Note:    DPMI host reflects exception to current client's handler
  678. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  679. --------E-310211-----------------------------
  680. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  681.     AX = 0211h
  682.     BL = exception number (00h-1Fh)
  683. Return: CF clear if successful
  684.         CX:(E)DX = selector:offset of exception handler
  685.     CF set on error
  686.         AX = error code (8021h) (see #1810)
  687. Notes:    returns address of protected-mode handler for real-mode exception
  688.     DPMI host performs a switch to protected mode, reflects the exception
  689.       to the virtual machine's primary client, and returns to real mode
  690.       on the handler's completion
  691. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  692. --------E-310212-----------------------------
  693. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  694.     AX = 0212h
  695.     BL = exception or fault number (00h-1Fh)
  696.     CX:(E)DX = exception handler selector:offset
  697. Return: CF clear if successful
  698.     CF set on error
  699.         AX = error code (8021h,8022h) (see #1810)
  700. Note:    DPMI host sends exception to current client's handler
  701. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  702. --------E-310213-----------------------------
  703. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  704.     AX = 0213h
  705.     BL = exception or fault number (00h-1Fh)
  706.     CX:(E)DX = exception handler selector:offset
  707. Return: CF clear if successful
  708.     CF set on error
  709.         AX = error code (8021h,8022h) (see #1810)
  710. Notes:    specifies address of protected-mode handler for real-mode exception
  711.     DPMI host performs a switch to protected mode, reflects the exception
  712.       to the virtual machine's primary client, and returns to real mode
  713.       on the handler's completion
  714. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  715. --------E-310300-----------------------------
  716. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  717.     AX = 0300h
  718.     BL = interrupt number
  719.     BH = flags
  720.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  721.             reserved, must be 0 (DPMI 1.0+)
  722.         others: reserved, must be 0
  723.     CX = number of words to copy from protected mode to real mode stack
  724.     ES:(E)DI = selector:offset of real mode call structure (see #1815)
  725. Return: CF clear if successful
  726.         real mode call structure modified (all fields except SS:SP, CS:IP
  727.           filled with return values from real mode interrupt)
  728.     CF set on error
  729.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1810)
  730.     protected mode stack unchanged
  731. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  732.     CS:IP in the real mode call structure is ignored for this call,
  733.       instead, the indicated interrupt vector is used for the address
  734.     the flags in the call structure are pushed on the real mode stack to
  735.       form an interrupt stack frame, and the trace and interrupt flags are
  736.       clear on entry to the handler
  737.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  738.     the real mode handler must return with the stack in the same state as
  739.       it was on being called
  740. SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286",INT 2C/AX=0026h
  741. SeeAlso: INT 2F/AX=FB42h/BX=000Dh
  742.  
  743. Format of DPMI real mode call structure:
  744. Offset    Size    Description    (Table 1815)
  745.  00h    DWORD    EDI
  746.  04h    DWORD    ESI
  747.  08h    DWORD    EBP
  748.  0Ch    DWORD    reserved (00h)
  749.  10h    DWORD    EBX
  750.  14h    DWORD    EDX
  751.  18h    DWORD    ECX
  752.  1Ch    DWORD    EAX
  753.  20h    WORD    flags
  754.  22h    WORD    ES
  755.  24h    WORD    DS
  756.  26h    WORD    FS
  757.  28h    WORD    GS
  758.  2Ah    WORD    IP
  759.  2Ch    WORD    CS
  760.  2Eh    WORD    SP
  761.  30h    WORD    SS
  762. --------E-310301-----------------------------
  763. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  764.     AX = 0301h
  765.     BH = flags
  766.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  767.             reserved, must be 0 (DPMI 1.0+)
  768.         others: reserved must be 0
  769.     CX = number of words to copy from protected mode to real mode stack
  770.     ES:(E)DI = selector:offset of real mode call structure
  771.           (see #1815 at INT 31/AX=0300h)
  772. Return: CF clear if successful
  773.         real mode call structure modified (all fields except SS:SP, CS:IP
  774.           filled with return values from real mode interrupt)
  775.     CF set on error
  776.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1810)
  777.     protected mode stack unchanged
  778. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  779.     the real mode procedure must exit with a FAR return
  780.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  781.     the real mode handler must return with the stack in the same state as
  782.       it was on being called
  783. SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  784. SeeAlso: INT 2C/AX=0025h
  785. --------E-310302-----------------------------
  786. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  787.     AX = 0302h
  788.     BH = flags
  789.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  790.             reserved, must be 0 (DPMI 1.0+)
  791.         others: reserved, must be 0
  792.     CX = number of words to copy from protected mode to real mode stack
  793.     ES:(E)DI = selector:offset of real mode call structure
  794.           (see #1815 at INT 31/AX=0300h)
  795. Return: CF clear if successful
  796.         real mode call structure modified (all fields except SS:SP, CS:IP
  797.           filled with return values from real mode interrupt)
  798.     CF set on error
  799.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1810)
  800.     protected mode stack unchanged
  801. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  802.     the flags in the call structure are pushed on the real mode stack to
  803.       form an interrupt stack frame, and the trace and interrupt flags are
  804.       clear on entry to the handler
  805.     the real mode procedure must exit with an IRET
  806.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  807.     the real mode handler must return with the stack in the same state as
  808.       it was on being called
  809. SeeAlso: AX=0300h
  810. --------E-310303-----------------------------
  811. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  812.     AX = 0303h
  813.     DS:(E)SI = selector:offset of procedure to call
  814.     ES:(E)DI = selector:offset of real mode call structure (see #1815)
  815. Return: CF clear if successful
  816.         CX:DX = segment:offset of real mode call address (see #1816)
  817.     CF set on error
  818.         AX = error code (DPMI 1.0+) (8015h) (see #1810)
  819. Notes:    the real mode call structure is static, causing reentrancy problems;
  820.       its contents are only valid at the time of a callback
  821.     the called procedure must modify the real mode CS:IP before returning
  822.     values are returned to real mode by modifying the real mode call struc
  823.     DPMI hosts must provide at least 16 callbacks per client
  824.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  825.       not support this function
  826. SeeAlso: AX=0304h,AX=0C00h
  827.  
  828. (Table 1816)
  829. Values DPMI real-mode callback procedure is called with:
  830.     DS:(E)SI = selector:offset of real mode SS:SP
  831.     ES:(E)DI = selector:offset of real mode call structure
  832.     SS:(E)SP = locked protected mode API stack
  833.     interrupts disabled
  834. Return: (with IRET)
  835.     ES:(E)DI = selector:offset of real mode call structure to restore
  836. --------E-310304-----------------------------
  837. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  838.     AX = 0304h
  839.     CX:DX = real mode callback address
  840. Return: CF clear if successful
  841.     CF set on error
  842.         AX = error code (DPMI 1.0+) (8024h) (see #1810)
  843. Note:    the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  844.       not support this function
  845. SeeAlso: AX=0303h
  846. --------E-310305-----------------------------
  847. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  848.     AX = 0305h
  849. Return: CF clear
  850.     AX = size in bytes of state buffer
  851.     BX:CX = real mode address of procedure to save/restore state
  852.     SI:(E)DI = protected mode procedure to save/restore state (see #1817)
  853. Notes:    the buffer size will be zero if it is not necessary to preserve state
  854.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  855.     this function is only needed if using the raw mode switch service
  856. SeeAlso: AX=0306h
  857.  
  858. (Table 1817)
  859. Call DPMI state-save procedures with:
  860.     AL = direction
  861.         00h save state
  862.         01h restore state
  863.     ES:(E)DI -> state buffer
  864. Return: all registers preserved
  865. --------E-310306-----------------------------
  866. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  867.     AX = 0306h
  868. Return: CF clear
  869.     BX:CX -> procedure to switch from real to protected mode (see #1818)
  870.     SI:(E)DI -> procedure to switch from protected to real mode
  871. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  872.     the caller must save and restore the state of the task with AX=0305h
  873.     not supported by MS Windows 3.0 in Standard mode
  874. SeeAlso: AX=0305h
  875.  
  876. (Table 1818)
  877. Values to JUMP at mode-switch procedures with:
  878.     AX = new DS
  879.     CX = new ES
  880.     DX = new SS
  881.     (E)BX = new (E)SP
  882.     SI:(E)DI = new CS:(E)IP
  883. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  884.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  885.     interrupts will stay disabled during the entire mode switch if they
  886.       are disabled on entry to the mode-switch procedure
  887. --------E-310400-----------------------------
  888. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  889.     AX = 0400h
  890. Return: CF clear
  891.     AH = major version of DPMI spec supported
  892.     AL = two-digit minor version of DPMI spec supported
  893.     BX = DPMI host flags (see #1819)
  894.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  895.     DH = curr value of virtual master interrupt controller base interrupt
  896.     DL = curr value of virtual slave interrupt controller base interrupt
  897. BUG:    Windows NT versions from the March 1993 beta to at least the Final
  898.       release with fixes to CSD002 report version 0090h (0.144); this has
  899.       reportedly been corrected in the Windows NT 3.5 beta
  900. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
  901.  
  902. Bitfields for DPMI host flags:
  903. Bit(s)    Description    (Table 1819)
  904.  0    running under an 80386 (32-bit) implementation
  905.  1    processor returns to real mode for reflected interrupts instead of V86
  906.       mode
  907.  2    virtual memory supported
  908.  3    reserved (undefined)
  909.  4-15    reserved (zero)
  910. --------E-310401-----------------------------
  911. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  912.     AX = 0401h
  913.     ES:(E)DI -> 128-byte buffer for host description (see #1820)
  914. Return: CF clear if successful
  915.         AX = capabilities (see #1821)
  916.         CX = reserved (00h)
  917.         DX = reserved (00h)
  918.         buffer filled
  919.     CF set on error (DPMI 0.9 only)
  920. SeeAlso: AX=0400h
  921.  
  922. Format of DPMI host description:
  923. Offset    Size    Description    (Table 1820)
  924.  00h    BYTE    host major version number
  925.  01h    BYTE    host minor version number
  926.  02h 126 BYTEs    ASCIZ host vendor name
  927.  
  928. Bitfields for DPMI capabilities:
  929. Bit(s)    Description    (Table 1821)
  930.  0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  931.  1    exceptions restartability supported
  932.  2    device mapping supported (see AX=0508h)
  933.  3    conventional memory mapping supported (see AX=0509h)
  934.  4    demand zero-fill supported
  935.  5    write-protect client capability supported
  936.  6    write-protect host capability supported
  937.  7-15    reserved
  938. --------E-310500-----------------------------
  939. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  940.     AX = 0500h
  941.     ES:(E)DI -> buffer for memory information (see #1822)
  942. Return: CF clear
  943. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  944.     this function must be considered advisory because other applications
  945.       may affect the results at any time after the call
  946.     fields not supported by the DPMI implementation are filled with
  947.       FFFFFFFFh
  948.     DPMI 1.0+ supports this function solely for backward compatibility; use
  949.       AX=050Bh instead
  950.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  951.       returns the first field in the memory information record
  952. SeeAlso: AX=0501h,AX=050Bh,AX=0604h
  953.  
  954. Format of DPMI memory information:
  955. Offset    Size    Description    (Table 1822)
  956.  00h    DWORD    largest available block in bytes
  957.  04h    DWORD    maximum unlocked page allocation
  958.  08h    DWORD    maximum locked page allocation
  959.  0Ch    DWORD    total linear address space in pages
  960.  10h    DWORD    total unlocked pages
  961.  14h    DWORD    free pages
  962.  18h    DWORD    total physical pages
  963.  1Ch    DWORD    free linear address space in pages
  964.  20h    DWORD    size of paging file/partition in pages
  965.  24h 12 BYTEs    reserved
  966. --------E-310501-----------------------------
  967. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  968.     AX = 0501h
  969.     BX:CX = size in bytes
  970. Return: CF clear if successful
  971.         BX:CX = linear address of block
  972.         SI:DI = memory block handle for resizing and freeing block
  973.     CF set on error
  974.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #1810)
  975. Notes:    no selectors are allocated
  976.     the memory block is allocated unlocked (can be locked with AX=0600h)
  977.     allocations are often page granular (see AX=0604h)
  978.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  979.       for this function to fail even if AX=0500h indicates that enough
  980.       memory is available
  981. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  982. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  983. --------E-310502-----------------------------
  984. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  985.     AX = 0502h
  986.     SI:DI = handle of memory block
  987. Return: CF clear if successful
  988.     CF set on error
  989.         AX = error code (DPMI 1.0+) (8023h) (see #1810)
  990. Note:    any selectors allocated for the memory block must also be freed,
  991.       preferably before freeing the memory block
  992. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  993. --------E-310503-----------------------------
  994. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  995.     AX = 0503h
  996.     BX:CX = new size in bytes (nonzero)
  997.     SI:DI = handle of memory block
  998. Return: CF clear if successful
  999.         BX:CX = new linear address
  1000.         SI:DI = new handle of memory block
  1001.     CF set on error
  1002.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  1003.         (see #1810)
  1004. Notes:    any selectors pointing at the block must be updated
  1005.     the previous memory block handle becomes invalid
  1006.     an error is returned if the new size is 0
  1007. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  1008. --------E-310504-----------------------------
  1009. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  1010.     AX = 0504h
  1011.     EBX = page-aligned linear address of memory block (00000000h if any
  1012.           address is acceptable)
  1013.     ECX = size in bytes (nonzero)
  1014.     EDX = flags
  1015.         bit 0: set to create committed pages instead of uncommitted pages
  1016.         bits 1-31 reserved (0)
  1017. Return: CF clear if successful
  1018.         EBX = linear address of memory block
  1019.         ESI = memory block handle
  1020.     CF set on error
  1021.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #1810)
  1022. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  1023. SeeAlso: AX=0501h,AX=0505h
  1024. --------E-310505-----------------------------
  1025. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  1026.     AX = 0505h
  1027.     ESI = memory block handle
  1028.     ECX = new size in bytes (nonzero)
  1029.     EDX = flags
  1030.         bit 0: create committed pages rather than uncommitted pages
  1031.         bit 1: segment descriptor update required
  1032.         ES:EBX -> buffer containing array of WORDs with selectors
  1033.         EDI = number of selectors in array
  1034.         bits 2-31 reserved (0)
  1035. Return: CF clear if successful
  1036.         EBX = new linear base address
  1037.         ESI = new memory block handle
  1038.     CF set on error
  1039.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #1810)
  1040. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  1041.     the old memory block handle becomes invalid
  1042.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  1043.       all descriptors for selectors in the update buffer which fall within
  1044.       the memory block
  1045. SeeAlso: AX=0503h,AX=0504h
  1046. --------E-310506-----------------------------
  1047. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  1048.     AX = 0506h
  1049.     ESI = memory block handle
  1050.     EBX = offset in memory block of first page
  1051.     ECX = number of pages
  1052.     ES:EDX -> array of WORDs to hold page attributes (see #1823)
  1053. Return: CF clear if successful
  1054.         buffer filled
  1055.     CF set on error
  1056.         AX = error code (8001h,8023h,8025h) (see #1810)
  1057. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  1058.     if EBX is not page-aligned, it will be rounded down
  1059. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  1060.  
  1061. Bitfields for DPMI page attribute word:
  1062. Bit(s)    Description    (Table 1823)
  1063.  0-2    page type
  1064.     000 uncommitted
  1065.     001 committed
  1066.     010 mapped (see AX=0508h,AX=0509h)
  1067.     other currently unused
  1068.  3    page is read/write rather than read-only
  1069.  4    accessed/dirty bits supplied in bits 5 and 6
  1070.  5    page has been accessed (only valid if bit 4 set)
  1071.  6    page has been written (only valid if bit 4 set)
  1072.  7-15    reserved (0)
  1073. --------E-310507-----------------------------
  1074. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  1075.     AX = 0507h
  1076.     ESI = memory block handle
  1077.     EBX = offset in memory block of first page
  1078.     ECX = number of pages
  1079.     ES:EDX -> array of WORDs with new page attributes (see #1823)
  1080. Return: CF clear if successful
  1081.     CF set on error
  1082.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  1083.         (see #1810)
  1084.         ECX = number of pages which have been set
  1085. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  1086.     if EBX is not page-aligned, it will be rounded down
  1087. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  1088. --------E-310508-----------------------------
  1089. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  1090.     AX = 0508h
  1091.     ESI = memory block handle
  1092.     EBX = page-aligned offset within memory block of page(s) to be mapped
  1093.     ECX = number of pages to map
  1094.     EDX = page-aligned physical address of device
  1095. Return: CF clear if successful
  1096.     CF set on error
  1097.         AX = error code (8001h,8003h,8023h,8025h) (see #1810)
  1098. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  1099.     support of this function is optional; hosts are also allowed to support
  1100.       the function for some devices but not others
  1101. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  1102. --------E-310509-----------------------------
  1103. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  1104.     AX = 0509h
  1105.     ESI = memory block handle
  1106.     EBX = page-aligned offset within memory block of page(s) to map
  1107.     ECX = number of pages to map
  1108.     EDX = page-aligned linear address of conventional (below 1M) memory
  1109. Return: CF clear if successful
  1110.     CF set on error
  1111.         AX = error code (8001h,8003h,8023h,8025h) (see #1810)
  1112. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  1113.     support of this function is optional
  1114. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  1115. --------E-31050A-----------------------------
  1116. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  1117.     AX = 050Ah
  1118.     SI:DI = memory block handle
  1119. Return: CF clear if successful
  1120.         SI:DI = size in bytes
  1121.         BX:CX = base address
  1122.     CF set on error
  1123.         AX = error code (8023h) (see #1810)
  1124. SeeAlso: AX=0501h,AX=0504h
  1125. --------E-31050B-----------------------------
  1126. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  1127.     AX = 050Bh
  1128.     ES:(E)DI -> 128-byte buffer for memory information (see #1824)
  1129. Return: CF clear if successful
  1130.     CF set on error (DPMI 0.9 only)
  1131. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  1132. SeeAlso: AX=0500h
  1133.  
  1134. Format of DPMI memory information:
  1135. Offset    Size    Description    (Table 1824)
  1136.  00h    DWORD    total allocated bytes of physical memory controlled by host
  1137.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  1138.  08h    DWORD    total available bytes of virtual memory controlled by host
  1139.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  1140.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  1141.  14h    DWORD    total allocated bytes of virtual memory for current client
  1142.  18h    DWORD    total available bytes of virtual memory for current client
  1143.  1Ch    DWORD    total locked bytes for current client
  1144.  20h    DWORD    maximum locked bytes for current client
  1145.  24h    DWORD    highest linear address available to current client
  1146.  28h    DWORD    largest available memory block in bytes
  1147.  2Ch    DWORD    minimum allocation unit in bytes
  1148.  30h    DWORD    allocation alignment unit size in bytes
  1149.  34h 76 BYTEs    reserved (00h)
  1150. --------E-310600-----------------------------
  1151. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  1152.     AX = 0600h
  1153.     BX:CX = starting linear address
  1154.     SI:DI = size of region in bytes
  1155. Return: CF clear if successful
  1156.     CF set on error
  1157.         none of the memory is locked
  1158.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #1810)
  1159. Notes:    pages at beginning and end will be locked if the region overlaps them
  1160.     may be called multiple times for a given page; the DPMI host keeps a
  1161.       lock count for each page
  1162. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  1163. --------E-310601-----------------------------
  1164. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  1165.     AX = 0601h
  1166.     BX:CX = starting linear address
  1167.     SI:DI = size of region in bytes
  1168. Return: CF clear if successful
  1169.     CF set on error
  1170.         none of the memory is unlocked
  1171.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1810)
  1172. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  1173.     memory whose lock count has not reached zero remains locked
  1174. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  1175. --------E-310602-----------------------------
  1176. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  1177.     AX = 0602h
  1178.     BX:CX = starting linear address
  1179.     SI:DI = size of region in bytes
  1180. Return: CF clear if successful
  1181.     CF set on error
  1182.         none of the memory is made pageable
  1183.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1810)
  1184. Notes:    must relock all unlocked real mode memory before terminating process
  1185.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  1186.     pages at beginning and end will be unlocked if the region overlaps them
  1187.     pageability of real mode pages is binary, not a count
  1188. SeeAlso: AX=0600h,AX=0603h
  1189. --------E-310603-----------------------------
  1190. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  1191.     AX = 0603h
  1192.     BX:CX = starting linear address
  1193.     SI:DI = size of region in bytes
  1194. Return: CF clear if successful
  1195.     CF set on error
  1196.         none of the memory is relocked
  1197.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #1810)
  1198. Notes:    pages at beginning and end will be relocked if the region overlaps them
  1199.     pageability of real mode pages is binary, not a count
  1200. SeeAlso: AX=0602h
  1201. --------E-310604-----------------------------
  1202. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  1203.     AX = 0604h
  1204. Return: CF clear if successful
  1205.         BX:CX = page size in bytes
  1206.     CF set on error
  1207.         AX = error code (DPMI 1.0+) (see also #1810)
  1208.         8001h unsupported, 16-bit host
  1209. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  1210.       unchanged
  1211. --------E-310700-----------------------------
  1212. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  1213.     AX = 0700h
  1214.     BX:CX = starting linear page number
  1215.     SI:DI = number of pages to mark as paging candidates
  1216. Return: ???
  1217. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  1218.       specification, this function is called by MS Windows TASKMAN,
  1219.       PROGMAN, and KERNEL
  1220. SeeAlso: AX=0701h,AX=0702h
  1221. --------E-310701-----------------------------
  1222. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  1223.     AX = 0701h
  1224.     BX:CX = starting linear page number
  1225.     SI:DI = number of pages to discard
  1226. Return: ???
  1227. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  1228.       specification, this function is called by MS Windows TASKMAN,
  1229.       PROGMAN, and KERNEL
  1230. SeeAlso: AX=0700h,AX=0703h
  1231. --------E-310702-----------------------------
  1232. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  1233.     AX = 0702h
  1234.     BX:CX = starting linear address
  1235.     SI:DI = number of bytes to mark as paging candidates
  1236. Return: CF clear if successful
  1237.     CF set on error
  1238.         AX = error code (DPMI 1.0+) (8025h) (see #1810)
  1239. Notes:    this function is advisory, and does not force immediate paging
  1240.     partial pages will not be discarded
  1241. SeeAlso: AX=0700h,AX=0703h
  1242. --------E-310703-----------------------------
  1243. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  1244.     AX = 0703h
  1245.     BX:CX = starting linear address
  1246.     SI:DI = number of bytes to mark as discarded
  1247. Return: CF clear if successful
  1248.     CF set on error
  1249.         AX = error code (DPMI 1.0+) (8025h) (see #1810)
  1250. Notes:    this function is advisory, and may be ignored by DPMI implementations
  1251.     partial pages will not be discarded
  1252. SeeAlso: AX=0701h,AX=0702h
  1253. --------E-310800-----------------------------
  1254. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  1255.     AX = 0800h
  1256.     BX:CX = physical address (should be above 1 MB)
  1257.     SI:DI = size in bytes
  1258. Return: CF clear if successful
  1259.         BX:CX = linear address which maps the requested physical memory
  1260.     CF set on error
  1261.         AX = error code (DPMI 1.0+) (8003h,8021h) (see #1810)
  1262. Notes:    implementations may refuse this call because it can circumvent protects
  1263.     the caller must build an appropriate selector for the memory
  1264.     do not use for memory mapped in the first megabyte
  1265. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  1266. --------E-310801-----------------------------
  1267. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  1268.     AX = 0801h
  1269.     BX:CX = linear address returned by AX=0800h
  1270. Return: CF clear if successful
  1271.     CF set on error
  1272.         AX = error code (8025h) (see #1810)
  1273. Note:    should be called at end of access to device mapped with AX=0800h
  1274. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  1275. --------E-310900-----------------------------
  1276. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  1277.     AX = 0900h
  1278. Return: CF clear
  1279.     virtual interrupts disabled
  1280.     AL = previous interrupt state (00h disabled, 01h enabled)
  1281.     AH preserved
  1282. Notes:    the previous state may be restored simply by executing another INT 31
  1283.     a CLI instruction may be used if the previous state is unimportant,
  1284.       but should be assumed to be very slow due to trapping by the host
  1285. SeeAlso: AX=0901h,AX=0902h
  1286. --------E-310901-----------------------------
  1287. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  1288.     AX = 0901h
  1289. Return: CF clear
  1290.     virtual interrupts enabled
  1291.     AL = previous interrupt state (00h disabled, 01h enabled)
  1292.     AH preserved
  1293. Notes:    the previous state may be restored simply by executing another INT 31
  1294.     a STI instruction may be used if the previous state is unimportant,
  1295.       but should be assumed to be very slow due to trapping by the host
  1296. SeeAlso: AX=0900h,AX=0902h
  1297. --------E-310902-----------------------------
  1298. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  1299.     AX = 0902h
  1300. Return: CF clear
  1301.     AL = current interrupt state (00h disabled, 01h enabled)
  1302. Note:    should be used rather than PUSHF because that instruction yields the
  1303.       physical interrupt state rather than the per-client virtualized
  1304.       interrupt flag
  1305. SeeAlso: AX=0900h,AX=0901h
  1306. --------E-310A00-----------------------------
  1307. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  1308.     AX = 0A00h
  1309.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  1310. Return: CF clear if successful
  1311.         ES:(E)DI -> FAR extended API entry point
  1312.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  1313.     CF set on error
  1314.         AX = error code (DPMI 1.0+) (8001h) (see #1810)
  1315. Notes:    extended API parameters are vendor-specific
  1316.     DPMI 1.0+ supports this function solely for backward compatibility; use
  1317.       INT 2F/AX=168Ah instead
  1318.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  1319.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  1320.       386MAX v7.01.
  1321. SeeAlso: INT 2F/AX=168Ah
  1322. --------E-310B00-----------------------------
  1323. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  1324.     AX = 0B00h
  1325.     BX:CX = linear address
  1326.     DL = size (1,2,4 bytes)
  1327.     DH = type (00h execute, 01h write, 02h read/write)
  1328. Return: CF clear if successful
  1329.         BX = watchpoint handle
  1330.     CF set on error
  1331.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #1810)
  1332. SeeAlso: AX=0212h,AX=0601h
  1333. --------E-310B01-----------------------------
  1334. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  1335.     AX = 0B01h
  1336.     BX = watchpoint handle
  1337. Return: CF clear if successful
  1338.     CF set on error
  1339.         AX = error code (DPMI 1.0+) (8023h) (see #1810)
  1340. Note:    the watchpoint handle is freed
  1341. SeeAlso: AX=0B00h
  1342. --------E-310B02-----------------------------
  1343. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  1344.     AX = 0B02h
  1345.     BX = watchpoint handle
  1346. Return: CF clear if successful
  1347.         AX = status flags
  1348.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  1349.     CF set on error
  1350.         AX = error code (DPMI 1.0+) (8023h) (see #1810)
  1351. SeeAlso: AX=0B00h,AX=0B03h
  1352. --------E-310B03-----------------------------
  1353. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  1354.     AX = 0B03h
  1355.     BX = watchpoint handle
  1356. Return: CF clear if successful
  1357.     CF set on error
  1358.         AX = error code (DPMI 1.0+) (8023h) (see #1810)
  1359. SeeAlso: AX=0B02h
  1360. --------E-310C00-----------------------------
  1361. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  1362.     AX = 0C00h
  1363.     ES:(E)DI -> resident service provider structure (see #1825)
  1364. Return: CF clear if successful
  1365.     CF set on error
  1366.         AX = error code (8015h,8021h,8025h) (see #1810 at AX=0000h)
  1367. Note:    calling this function declares an intent to provide resident
  1368.       protected mode services after terminating with AX=0C01h
  1369. SeeAlso: AX=0303h,AX=0C01h
  1370.  
  1371. Format of DPMI resident service provider structure:
  1372. Offset    Size    Description    (Table 1825)
  1373.  00h    QWORD    descriptor for 16-bit data segment
  1374.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  1375.  10h    WORD    offset of 16-bit callback procedure
  1376.  12h  2 BYTEs    reserved
  1377.  14h    QWORD    descriptor for 32-bit data segment
  1378.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  1379.  24h    DWORD    offset of 32-bit callback procedure
  1380. --------E-310C01-----------------------------
  1381. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  1382.     AX = 0C01h
  1383.     BL = return code
  1384.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  1385. Return: never
  1386. Notes:    should only be used if the program will only provide services to
  1387.       other DPMI programs
  1388.     any protected mode memory remains allocated to the program unless
  1389.       explicitly freed before this call
  1390.     must first call AX=0C00h or program will simply be terminated
  1391. SeeAlso: AX=0C00h,INT 21/AH=31h
  1392. --------E-310D00-----------------------------
  1393. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  1394.     AX = 0D00h
  1395.     ES:(E)DI -> shared memory allocation request structure (see #1826)
  1396. Return: CF clear if successful
  1397.         request structure updated
  1398.     CF set on error
  1399.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see #1810)
  1400. Note:    first 16 bytes of memory block will be initialized to zeros on the
  1401.       first allocation
  1402. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  1403.  
  1404. Format of DPMI shared memory allocation request structure:
  1405. Offset    Size    Description    (Table 1826)
  1406.  00h    DWORD    requested length of shared memory block in bytes
  1407.  04h    DWORD    (ret) allocated length of block
  1408.  08h    DWORD    (ret) shared memory handle
  1409.  0Ch    DWORD    (ret) linear address of memory block
  1410.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  1411.         (name max 128 bytes)
  1412.  16h  2 BYTEs    reserved
  1413.  18h  4 BYTEs    reserved (00h)
  1414. --------E-310D01-----------------------------
  1415. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  1416.     AX = 0D01h
  1417.     SI:DI = shared memory block handle
  1418. Return: CF clear if successful
  1419.     CF set on error
  1420.         AX = error code (8023h) (see #1810)
  1421. Notes:    handle becomes invalid after this call
  1422.     DPMI maintains separate global and virtual machine use counts for each
  1423.       shared memory block; when the global use counts reaches zero, the
  1424.       block is finally destroyed
  1425. SeeAlso: AX=0502h,AX=0D00h
  1426. --------E-310D02-----------------------------
  1427. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  1428.     AX = 0D02h
  1429.     SI:DI = shared memory block handle
  1430.     DX = flags
  1431.         bit 0: return immediately rather than suspending if serialization
  1432.           unavailable
  1433.         bit 1: shared rather than exclusive serialization
  1434.         bits 2-15 reserved (0)
  1435. Return: CF clear if successful
  1436.     CF set on error
  1437.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see #1810)
  1438. Notes:    an exclusive serialization blocks any other serialization attempts for
  1439.       the same block by another virtual machine; a shared serialization
  1440.       blocks attempts at exclusive serialization by another virtual machine
  1441.     hosts are not required to detect deadlock
  1442.     a client's interrupt handler can cancel a serialization call which
  1443.       caused it to block by calling AX=0D03h
  1444. SeeAlso: AX=0D00h,AX=0D03h
  1445. --------E-310D03-----------------------------
  1446. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  1447.     AX = 0D03h
  1448.     SI:DI = shared memory block handle
  1449.     DX = flags
  1450.         bit 0: release shared serialization rather than exclusive serialztn
  1451.         bit 1: free pending serialization
  1452.         bits 2-15 reserved (0)
  1453. Return: CF clear if successful
  1454.     CF set on error
  1455.         AX = error code (8002h,8023h) (see #1810 at AX=0000h)
  1456. SeeAlso: AX=0D00h,AX=0D02h
  1457. --------E-310E00-----------------------------
  1458. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  1459.     AX = 0E00h
  1460. Return: CF clear
  1461.     AX = coprocessor status (see #1827)
  1462. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1463. SeeAlso: AX=0E01h
  1464.  
  1465. Bitfields for DPMI coprocessor status:
  1466. Bit(s)    Description    (Table 1827)
  1467.  0    numeric coprocessor enabled for current client
  1468.  1    client is emulating coprocessor
  1469.  2    numeric coprocessor is present
  1470.  3    host is emulating coprocessor instructions
  1471.  4-7    coprocessor type
  1472.     0000 none
  1473.     0010 80287
  1474.     0011 80387
  1475.     0100 80486 with numeric coprocessor
  1476.     other reserved
  1477.  8-15    not used
  1478. --------E-310E01-----------------------------
  1479. INT 31 P - DPMI 1.0+ - SET EMULATION
  1480.     AX = 0E01h
  1481.     BX = coprocessor flag bits (see #1828)
  1482. Return: CF clear if successful
  1483.     CF set on error
  1484.         AX = error code (8026h) (see #1810 at AX=0000h)
  1485. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1486. SeeAlso: AX=0E00h
  1487.  
  1488. Bitfields for DPMI coprocessor flags:
  1489. Bit(s)    Description    (Table 1828)
  1490.  0    enable numeric coprocessor for current client
  1491.  1    client will emulate coprocessor
  1492.  2-15    not used
  1493. --------E-3157-------------------------------
  1494. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  1495.     AH = 57h
  1496.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  1497.     ???
  1498. Return: ???
  1499. SeeAlso: INT 2C/AX=0000h"RM386"
  1500. --------E-315702-----------------------------
  1501. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  1502.     AX = 5702h
  1503.     DX = PSP segment of caller
  1504.     STACK: WORD    ???
  1505.            WORD    flags (bit 0 set if 32-bit program)
  1506. Return: as for DPMI mode-switch entry point (see #1441 at INT 2F/AX=1687h)
  1507. Note:    this function is called by the real-mode DPMI mode-switch entry point
  1508. SeeAlso: INT 2F/AX=1687h
  1509. --------v-32---------------------------------
  1510. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  1511. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  1512. --------v-32---------------------------------
  1513. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  1514. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  1515. --------M-330000-----------------------------
  1516. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  1517.     AX = 0000h
  1518. Return: AX = status
  1519.         0000h hardware/driver not installed
  1520.         FFFFh hardware/driver installed
  1521.     BX = number of buttons
  1522.         0000h other than two
  1523.         0002h two buttons (many drivers)
  1524.         0003h Mouse Systems/Logitech three-button mouse
  1525.         FFFFh two buttons
  1526. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  1527.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  1528.       and then call this function.    Logitech drivers v5.01 and v6.00
  1529.       reportedly do not correctly use Hercules graphics in dual-monitor
  1530.       systems, while version 4.10 does.
  1531.     the Logitech mouse driver contains the signature string "LOGITECH"
  1532.       three bytes past the interrupt handler; many of the Logitech mouse
  1533.       utilities check for this signature.
  1534.     Logitech MouseWare v6.30 reportedly does not support CGA video modes
  1535.       if no CGA is present when it is started and the video board is
  1536.       later switched into CGA emulation
  1537. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  1538. --------M-330001-----------------------------
  1539. INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
  1540.     AX = 0001h
  1541. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh,INT 6F/AH=06h"F_TRACK_ON"
  1542. --------M-330002-----------------------------
  1543. INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
  1544.     AX = 0002h
  1545. Note:    multiple calls to hide the cursor will require multiple calls to
  1546.       function 01h to unhide it.
  1547. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  1548. SeeAlso: INT 6F/AH=08h"F_TRACK_OFF"
  1549. --------M-330003-----------------------------
  1550. INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
  1551.     AX = 0003h
  1552. Return: BX = button status (see #1829)
  1553.     CX = column
  1554.     DX = row
  1555. Note:    in text modes, all coordinates are specified as multiples of the cell
  1556.       size, typically 8x8 pixels
  1557. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  1558.  
  1559. Bitfields for mouse button status:
  1560. Bit(s)    Description    (Table 1829)
  1561.  0    left button pressed if 1
  1562.  1    right button pressed if 1
  1563.  2    middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  1564. --------M-330004-----------------------------
  1565. INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
  1566.     AX = 0004h
  1567.     CX = column
  1568.     DX = row
  1569. Note:    the row and column are truncated to the next lower multiple of the cell
  1570.       size (typically 8x8 in text modes); however, some versions of the
  1571.       Microsoft documentation incorrectly state that the coordinates are
  1572.       rounded
  1573. SeeAlso: AX=0003h,INT 62/AX=0081h,INT 6F/AH=10h"F_PUT_SPRITE"
  1574. --------M-330005-----------------------------
  1575. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
  1576.     AX = 0005h
  1577.     BX = button number (see #1830)
  1578. Return: AX = button states (see #1829)
  1579.     BX = number of times specified button has been pressed since last call
  1580.     CX = column at time specified button was last pressed
  1581.     DX = row at time specified button was last pressed
  1582. Note:    at least for the Genius mouse driver, the number of button presses
  1583.       returned is limited to 7FFFh
  1584. SeeAlso: AX=0006h,INT 62/AX=007Ch
  1585.  
  1586. (Table 1830)
  1587. Values for mouse button number:
  1588.  0000h    left
  1589.  0001h    right
  1590.  0002h    middle (Mouse Systems/Logitech/Genius mouse)
  1591. --------M-330006-----------------------------
  1592. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
  1593.     AX = 0006h
  1594.     BX = button number (see #1830)
  1595. Return: AX = button states (see #1829)
  1596.     BX = number of times specified button has been released since last call
  1597.     CX = column at time specified button was last released
  1598.     DX = row at time specified button was last released
  1599. Note:    at least for the Genius mouse driver, the number of button releases
  1600.       returned is limited to 7FFFh
  1601. SeeAlso: AX=0005h,INT 62/AX=007Ch
  1602. --------M-330007-----------------------------
  1603. INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
  1604.     AX = 0007h
  1605.     CX = minimum column
  1606.     DX = maximum column
  1607. Note:    in text modes, the minimum and maximum columns are truncated to the
  1608.       next lower multiple of the cell size, typically 8x8 pixels
  1609. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1610. SeeAlso: INT 6F/AH=0Ch"F_SET_LIMITS_X"
  1611. --------M-330008-----------------------------
  1612. INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
  1613.     AX = 0008h
  1614.     CX = minimum row
  1615.     DX = maximum row
  1616. Note:    in text modes, the minimum and maximum rows are truncated to the
  1617.       next lower multiple of the cell size, typically 8x8 pixels
  1618. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1619. SeeAlso: INT 6F/AH=0Eh"F_SET_LIMITS_Y"
  1620. --------M-330009-----------------------------
  1621. INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
  1622.     AX = 0009h
  1623.     BX = column of cursor hot spot in bitmap (-16 to 16)
  1624.     CX = row of cursor hot spot (-16 to 16)
  1625.     ES:DX -> mask bitmap (see #1831)
  1626. Notes:    in graphics modes, the screen contents around the current mouse cursor
  1627.       position are ANDed with the screen mask and then XORed with the
  1628.       cursor mask
  1629.     the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
  1630.       hot spot row/column should be limited to -128..127
  1631.     Microsoft KnowledgeBase article Q19850 states that the high bit is
  1632.       right-most, but that statement is contradicted by all other available
  1633.       documentation
  1634. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh,INT 6F/AH=0Ah"F_DEF_MASKS"
  1635.  
  1636. Format of mouse mask bitmap:
  1637. Offset    Size    Description    (Table 1831)
  1638.  00h 16 WORDs    screen mask
  1639.  10h 16 WORDs    cursor mask
  1640. Note:    each word defines the sixteen pixels of a row, low bit rightmost
  1641. --------M-33000A-----------------------------
  1642. INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
  1643.     AX = 000Ah
  1644.     BX = hardware/software text cursor
  1645.         0000h software
  1646.         CX = screen mask
  1647.         DX = cursor mask
  1648.         0001h hardware
  1649.         CX = start scan line
  1650.         DX = end scan line
  1651. Note:    when the software cursor is selected, the character/attribute data at
  1652.       the current screen position is ANDed with the screen mask and then
  1653.       XORed with the cursor mask
  1654. SeeAlso: AX=0009h,INT 62/AX=007Eh
  1655. --------M-33000B-----------------------------
  1656. INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
  1657.     AX = 000Bh
  1658. Return: CX = number of mickeys mouse moved horizontally since last call
  1659.     DX = number of mickeys mouse moved vertically
  1660. Notes:    a mickey is the smallest increment the mouse can sense
  1661.     positive values indicate down/right
  1662. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  1663. --------M-33000C-----------------------------
  1664. INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  1665.     AX = 000Ch
  1666.     CX = call mask (see #1832)
  1667.     ES:DX -> FAR routine (see #1833)
  1668. SeeAlso: AX=0018h
  1669.  
  1670. Bitfields for mouse call mask:
  1671. Bit(s)    Description    (Table 1832)
  1672.  0    call if mouse moves
  1673.  1    call if left button pressed
  1674.  2    call if left button released
  1675.  3    call if right button pressed
  1676.  4    call if right button released
  1677.  5    call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
  1678.  6    call if middle button released (Mouse Systems/Logitech/Genius mouse)
  1679.  7-15    unused
  1680. Note:    some versions of the Microsoft documentation incorrectly state that CX
  1681.       bit 0 means call if mouse cursor moves
  1682.  
  1683. (Table 1833)
  1684. Values interrupt routine is called with:
  1685.     AX = condition mask (same bit assignments as call mask)
  1686.     BX = button state
  1687.     CX = cursor column
  1688.     DX = cursor row
  1689.     SI = horizontal mickey count
  1690.     DI = vertical mickey count
  1691. Notes:    some versions of the Microsoft documentation erroneously swap the
  1692.       meanings of SI and DI
  1693.     in text modes, the row and column will be reported as a multiple of
  1694.       the character cell size, typically 8x8 pixels
  1695. --------M-33000D-----------------------------
  1696. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
  1697.     AX = 000Dh
  1698. SeeAlso: AX=000Eh,INT 10/AH=04h
  1699. --------M-33000E-----------------------------
  1700. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
  1701.     AX = 000Eh
  1702. SeeAlso: AX=000Dh
  1703. --------M-33000F-----------------------------
  1704. INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
  1705.     AX = 000Fh
  1706.     CX = number of mickeys per 8 pixels horizontally (default 8)
  1707.     DX = number of mickeys per 8 pixels vertically (default 16)
  1708. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  1709. --------M-330010-----------------------------
  1710. INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
  1711.     AX = 0010h
  1712.     CX,DX = X,Y coordinates of upper left corner
  1713.     SI,DI = X,Y coordinates of lower right corner
  1714. Note:    mouse cursor is hidden in the specified region, and needs to be
  1715.       explicitly turned on again
  1716. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  1717. --------M-330010-----------------------------
  1718. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  1719.     AX = 0010h
  1720.     ES:DX -> update region list (see #1834)
  1721. Notes:    mouse cursor is hidden in the specified region, and needs to be
  1722.       explicitly turned on again
  1723.     this version of the call is described in an August 1988 version of the
  1724.       Genius Mouse programmer's reference; it has been changed to conform
  1725.       to the Microsoft version shown above by version 9.06 (and possibly
  1726.       earlier versions)
  1727. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  1728.  
  1729. Format of Genius Mouse update region list:
  1730. Offset    Size    Description    (Table 1834)
  1731.  00h    WORD    left-most column
  1732.  02h    WORD    top-most row
  1733.  04h    WORD    right-most column
  1734.  06h    WORD    bottom-most row
  1735. --------M-330011-----------------------------
  1736. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  1737.     AX = 0011h
  1738. Return: AX = FFFFh
  1739.     BX = number of buttons
  1740. SeeAlso: AX=0000h
  1741. --------M-330012-----------------------------
  1742. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  1743.     AX = 0012h
  1744.     BH = cursor width in words
  1745.     CH = rows in cursor
  1746.     BL = horizontal hot spot (-16 to 16)
  1747.     CL = vertical hot spot (-16 to 16)
  1748.     ES:DX -> bit map of screen and cursor maps
  1749. Return: AX = FFFFh if successful
  1750. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  1751. --------M-330013-----------------------------
  1752. INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
  1753.     AX = 0013h
  1754.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  1755. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  1756. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  1757. --------M-330014-----------------------------
  1758. INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
  1759.     AX = 0014h
  1760.     CX = call mask (see #1832)
  1761.     ES:DX -> FAR routine
  1762. Return: CX = call mask of previous interrupt routine
  1763.     ES:DX = FAR address of previous interrupt routine
  1764. SeeAlso: AX=000Ch,AX=0018h
  1765. --------M-330015-----------------------------
  1766. INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
  1767.     AX = 0015h
  1768. Return: BX = size of buffer needed to store driver state
  1769. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  1770. --------M-330016-----------------------------
  1771. INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
  1772.     AX = 0016h
  1773.     BX = size of buffer (see AX=0015h)
  1774.     ES:DX -> buffer for driver state
  1775. Note:    although not documented (since the Microsoft driver does not use it),
  1776.       many drivers appear to require BX on input
  1777. SeeAlso: AX=0015h,AX=0017h
  1778. --------M-330017-----------------------------
  1779. INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
  1780.     AX = 0017h
  1781.     BX = size of buffer (see AX=0015h)
  1782.     ES:DX -> buffer containing saved state
  1783. Notes:    although not documented (since the Microsoft driver does not use it),
  1784.       many drivers appear to require BX on input
  1785.     some mouse drivers range-check the values in the saved state based on
  1786.       the current video mode; thus, the video mode should be restored
  1787.       before the mouse driver's state is restored
  1788. SeeAlso: AX=0015h,AX=0016h
  1789. --------M-330018-----------------------------
  1790. INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
  1791.     AX = 0018h
  1792.     CX = call mask (see #1835)
  1793.     ES:DX -> FAR routine to be invoked on mouse events (see #1836)
  1794. Return: AX = status
  1795.         0018h if successful
  1796.         FFFFh on error
  1797. Notes:    up to three handlers can be defined by separate calls to this function,
  1798.       each with a different combination of shift states in the call mask;
  1799.       calling this function again with a call mask of 0000h undefines the
  1800.       specified handler (official documentation); specifying the same
  1801.       call mask and an address of 0000h:0000h undefines the handler (real
  1802.       life)
  1803.     some versions of the documentation erroneously reverse the order of
  1804.       the bits in the call mask
  1805. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  1806.  
  1807. Bitfields for mouse call mask:
  1808. Bit(s)    Description    (Table 1835)
  1809.  0    call if mouse moves
  1810.  1    call if left button pressed
  1811.  2    call if left button released
  1812.  3    call if right button pressed
  1813.  4    call if right button released
  1814.  5    call if shift button pressed during event
  1815.  6    call if ctrl key pressed during event
  1816.  7    call if alt key pressed during event
  1817. Note:    at least one of 5-7 must be set
  1818.  
  1819. (Table 1836)
  1820. Values user handler is called with:
  1821.     AX = condition mask (same bit assignments as call mask)
  1822.     BX = button state
  1823.     CX = cursor column
  1824.     DX = cursor row
  1825.     SI = horizontal mickey count
  1826.     DI = vertical mickey count
  1827. Return: registers preserved
  1828. Note:    in text modes, the row and column will be reported as a multiple of
  1829.       the cell size, typically 8x8 pixels
  1830. --------M-330019-----------------------------
  1831. INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
  1832.     AX = 0019h
  1833.     CX = call mask (see #1835)
  1834. Return: BX:DX = user interrupt vector
  1835.     CX = call mask (0000h if not found)
  1836. Note:    attempts to find a user event handler (defined by function 18h)
  1837.       whose call mask matches CX
  1838. SeeAlso: AX=0018h
  1839. --------M-33001A-----------------------------
  1840. INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
  1841.     AX = 001Ah
  1842.     BX = horizontal speed \
  1843.     CX = vertical speed   / (see AX=000Fh)
  1844.     DX = double speed threshold (see AX=0013h)
  1845. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  1846. --------M-33001B-----------------------------
  1847. INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
  1848.     AX = 001Bh
  1849. Return: BX = horizontal speed
  1850.     CX = vertical speed
  1851.     DX = double speed threshold
  1852. SeeAlso: AX=000Bh,AX=001Ah
  1853. --------M-33001C-----------------------------
  1854. INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
  1855.     AX = 001Ch
  1856.     BX = rate (see #1837)
  1857. Notes:    only available on InPort mouse
  1858.     values greater than 4 may cause unpredictable driver behavior
  1859.  
  1860. (Table 1837)
  1861. Values for mouse interrupt rate:
  1862.  00h    no interrupts allowed
  1863.  01h    30 per second
  1864.  02h    50 per second
  1865.  03h    100 per second
  1866.  04h    200 per second
  1867. --------M-33001D-----------------------------
  1868. INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
  1869.     AX = 001Dh
  1870.     BX = display page number
  1871. Note:    the cursor will be displayed on the specified page
  1872. SeeAlso: AX=001Eh
  1873. --------M-33001E-----------------------------
  1874. INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
  1875.     AX = 001Eh
  1876. Return: BX = display page number
  1877. SeeAlso: AX=001Dh
  1878. --------M-33001F-----------------------------
  1879. INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
  1880.     AX = 001Fh
  1881. Return: AX = status
  1882.         001Fh successful
  1883.         ES:BX = INT 33 vector before mouse driver was first installed
  1884.         FFFFh unsuccessful
  1885. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  1886.     if you restore INT 33 to ES:BX, driver will be completely disabled
  1887.     many drivers return AX=001Fh even though the driver has been disabled
  1888. SeeAlso: AX=0020h
  1889. --------M-330020-----------------------------
  1890. INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
  1891.     AX = 0020h
  1892. Return: AX = status
  1893.         0020h successful
  1894.         FFFFh unsuccessful
  1895. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  1896.       which were removed by function 1Fh
  1897.     Microsoft's documentation states that no value is returned
  1898. SeeAlso: AX=001Fh
  1899. --------M-330021-----------------------------
  1900. INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
  1901.     AX = 0021h
  1902. Return: AX = status
  1903.         FFFFh if mouse driver installed
  1904.         BX = number of buttons (FFFFh = two buttons)
  1905.         0021h if mouse driver not installed
  1906. Note:    this call is identical to funtion 00h, but does not reset the mouse
  1907. SeeAlso: AX=0000h
  1908. --------M-330022-----------------------------
  1909. INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
  1910.     AX = 0022h
  1911.     BX = language (see #1838)
  1912. Note:    only available on international versions of the driver; US versions
  1913.       ignore this call
  1914. SeeAlso: AX=0023h
  1915.  
  1916. (Table 1838)
  1917. Values for mouse driver language:
  1918.  00h    English
  1919.  01h    French
  1920.  02h    Dutch
  1921.  03h    German
  1922.  04h    Swedish
  1923.  05h    Finnish
  1924.  06h    Spanish
  1925.  07h    Portugese
  1926.  08h    Italian
  1927. --------M-330023-----------------------------
  1928. INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
  1929.     AX = 0023h
  1930. Return: BX = language (see #1838)
  1931. Note:    the US version of the driver always returns zero
  1932. SeeAlso: AX=0022h
  1933. --------M-330024-----------------------------
  1934. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  1935.     AX = 0024h
  1936. Return: AX = FFFFh on error
  1937.     otherwise,
  1938.         BH = major version
  1939.         BL = minor version
  1940.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  1941.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  1942. SeeAlso: AX=004Dh,AX=006Dh
  1943. --------M-330025-----------------------------
  1944. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  1945.     AX = 0025h
  1946. Return: AX = general information (see #1839)
  1947.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  1948.     CX = mouse code active flag (for OS/2)
  1949.     DX = mouse driver busy flag (for OS/2)
  1950.  
  1951. Bitfields for general mouse driver information:
  1952. Bit(s)    Description    (Table 1839)
  1953.  15    driver loaded as device driver rather than TSR
  1954.  14    driver is newer integrated type
  1955.  13,12    current cursor type
  1956.     00 software text cursor
  1957.     01 hardware text cursor (CRT Controller's cursor)
  1958.     1X graphics cursor
  1959.  11-8    interrupt rate (see #1837)
  1960.  7-0    count of currently-active Mouse Display Drivers (MDD), the newer
  1961.       integrated driver type
  1962. --------M-330026-----------------------------
  1963. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  1964.     AX = 0026h
  1965. Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
  1966.     CX = maximum virtual X (for current video mode)
  1967.     DX = maximum virtual Y
  1968. Note:    for driver versions before 7.05, this call returns the currently-set
  1969.       maximum coordinates; v7.05+ returns the absolute maximum coordinates
  1970. SeeAlso: AX=0031h
  1971. --------M-330026-----------------------------
  1972. INT 33 - Genius Mouse 9.06 - ???
  1973.     AX = 0026h
  1974. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  1975. --------M-330027-----------------------------
  1976. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  1977.     AX = 0027h
  1978. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  1979.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  1980.     CX = horizontal mickeys moved since last call
  1981.     DX = vertical mickeys moved since last call
  1982. SeeAlso: AX=000Bh
  1983. --------M-330028-----------------------------
  1984. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  1985.     AX = 0028h
  1986.     CX = new video mode (call is NOP if 0000h)
  1987.     DH = Y font size (00h = default)
  1988.     DL = X font size (00h = default)
  1989. Return: CL = status (00h = successful)
  1990. Notes:    DX is ignored unless the selected video mode supports font size control
  1991.     when CX=0000h, an internal flag that had been set by a previous call
  1992.       is cleared; this is required before a mouse reset
  1993. SeeAlso: AX=0029h,INT 10/AH=00h
  1994. --------M-330029-----------------------------
  1995. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  1996.     AX = 0029h
  1997.     CX = previous video mode
  1998.         0000h get first supported video mode
  1999.         other get next supported mode after mode CX
  2000. Return: CX = first/next video mode (0000h = no more video modes)
  2001.     DS:DX -> description of video mode or 0000h:0000h if none
  2002. Notes:    the enumerated video modes may be in any order and may repeat
  2003.     the description string (if available) is terminated by '$' followed by
  2004.       a NUL byte
  2005. SeeAlso: AX=0028h
  2006. --------M-33002A-----------------------------
  2007. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  2008.     AX = 002Ah
  2009. Return: AX = internal counter controlling cursor visibility
  2010.     BX = cursor hot spot column
  2011.     CX = cursor hot spot row
  2012.     DX = mouse type (see #1840)
  2013. Note:    the hot spot location is relative to the upper left corner of the
  2014.       cursor block and may range from -128 to +127 both horizontally and
  2015.       vertically
  2016. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  2017.  
  2018. (Table 1840)
  2019. Values for mouse type:
  2020.  00h    none
  2021.  01h    bus
  2022.  02h    serial
  2023.  03h    InPort
  2024.  04h    IBM
  2025.  05h    Hewlett-Packard
  2026. --------M-33002B-----------------------------
  2027. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  2028.     AX = 002Bh
  2029.     BX = active acceleration profile
  2030.         0001h-0004h or FFFFh to restore default curves
  2031.     ES:SI -> buffer containing acceleration profile data (see #1841)
  2032. Return: AX = success flag
  2033. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  2034.  
  2035. Format of acceleration profile data:
  2036. Offset    Size    Description    (Table 1841)
  2037.  00h    BYTE    length of acceleration profile 1
  2038.  01h    BYTE    length of acceleration profile 2
  2039.  02h    BYTE    length of acceleration profile 3
  2040.  03h    BYTE    length of acceleration profile 4
  2041.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  2042.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  2043.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  2044.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  2045.  84h 32 BYTEs    speedup factor for acceleration profile 1
  2046.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2047.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  2048.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2049.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  2050.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2051.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  2052.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2053. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  2054. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  2055. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  2056. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  2057. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  2058.       unused bytes in the speedup factor fields are filled with 10h
  2059. --------M-33002C-----------------------------
  2060. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  2061.     AX = 002Ch
  2062. Return: AX = status (0000h success)
  2063.     BX = currently-active acceleration profile
  2064.     ES:SI -> acceleration profile data (see #1841)
  2065. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  2066. --------M-33002D-----------------------------
  2067. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  2068.     AX = 002Dh
  2069.     BX = acceleration level
  2070.         0001h-0004h to set profile, or FFFFh to get current profile
  2071. Return: AX = status
  2072.         0000h successful
  2073.         ES:SI -> 16-byte blank-padded name of acceleration profile
  2074.         FFFEh invalid acceleration curve number
  2075.         ES:SI destroyed
  2076.     BX = active acceleration curve number
  2077. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  2078. --------M-33002E-----------------------------
  2079. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  2080.     AX = 002Eh
  2081.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  2082.     ES:SI -> 64-byte buffer containing profile names (16 bytes per name)
  2083. Return: AX = status (0000h success)
  2084.         FFFEh error for ATI Mouse driver
  2085.     ES:SI buffer filled with default names if BL nonzero on entry
  2086. Notes:    not supported by Logitech driver v6.10
  2087.     supported by ATI Mouse driver v7.04
  2088. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  2089. --------M-33002F-----------------------------
  2090. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  2091.     AX = 002Fh
  2092. Return: AX = status
  2093. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  2094. SeeAlso: INT 2F/AH=53h
  2095. --------M-330030-----------------------------
  2096. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  2097.     AX = 0030h
  2098.     CX = command
  2099.         0000h get status of BallPoint device
  2100.         other set rotation angle and masks
  2101.         BX = rotation angle (-32768 to 32767 degrees)
  2102.         CH = primary button mask
  2103.         CL = secondary button mask
  2104. Return: AX = button status (FFFFh if no BallPoint) (see #1842)
  2105.     BX = rotation angle (0-360 degrees)
  2106.     CH = primary button mask
  2107.     CL = secondary button mask
  2108. Note:    not supported by the ATI Mouse driver which calls itself v7.04
  2109.  
  2110. Bitfields for BallPoint mouse button status:
  2111. Bit(s)    Description    (Table 1842)
  2112.  5    button 1
  2113.  4    button 2
  2114.  3    button 3
  2115.  2    button 4
  2116.  other    zero
  2117. --------M-330031-----------------------------
  2118. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  2119.     AX = 0031h
  2120. Return: AX = virtual X minimum
  2121.     BX = virtual Y minimum
  2122.     CX = virtual X maximum
  2123.     DX = virtual Y maximum
  2124. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  2125.       the default is minimum = 0 and maximum = absolute maximum
  2126.       (see AX=0026h)
  2127. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  2128. --------M-330032-----------------------------
  2129. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  2130.     AX = 0032h
  2131. Return: AX = active function flags (FFFFh for v8.10)
  2132.         bit 15: function 0025h supported
  2133.         bit 14: function 0026h supported
  2134.         ...
  2135.         bit 0:  function 0034h supported
  2136.     BX = ??? (0000h) officially unused
  2137.     CX = ??? (E000h) officially unused
  2138.     DX = ??? (0000h) officially unused
  2139. --------M-330033-----------------------------
  2140. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  2141.     AX = 0033h
  2142.     CX = size of buffer
  2143.         0000h get required buffer size
  2144.         Return: AX = 0000h
  2145.             CX = required size (0154h for Logitech v6.10, 0159h
  2146.                 for MS v8.10-8.20)
  2147.         other
  2148.         ES:DX -> buffer of CX bytes for mouse settings
  2149.         Return: AX = 0000h
  2150.             CX = number of bytes returned
  2151.             ES:DX buffer filled (see #1843)
  2152. SeeAlso: AX=002Bh
  2153.  
  2154. Format of mouse settings data buffer:
  2155. Offset    Size    Description    (Table 1843)
  2156.  00h    BYTE    mouse type
  2157.  01h    BYTE    current language
  2158.  02h    BYTE    horizontal sensitivity (00h-64h)
  2159.  03h    BYTE    vertical sensitivity (00h-64h)
  2160.  04h    BYTE    double-speed threshold (00h-64h)
  2161.  05h    BYTE    ballistic curve (01h-04h)
  2162.  06h    BYTE    interrupt rate (01h-04h)
  2163.  07h    BYTE    cursor override mask
  2164.  08h    BYTE    laptop adjustment
  2165.  09h    BYTE    memory type (00h-02h)
  2166.  0Ah    BYTE    SuperVGA support (00h,01h)
  2167.  0Bh    BYTE    rotation angle
  2168.  0Ch    BYTE    ???
  2169.  0Dh    BYTE    primary button (01h-04h)
  2170.  0Eh    BYTE    secondary button (01h-04h)
  2171.  0Fh    BYTE    click lock enabled (00h,01h)
  2172.  10h 324 BYTEs    acceleration profile data (see #1841)
  2173. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  2174. --------M-330034-----------------------------
  2175. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  2176.     AX = 0034h
  2177. Return: AX = status (0000h successful)
  2178.     ES:DX -> ASCIZ initialization (.INI) file name
  2179. --------M-330035-----------------------------
  2180. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  2181.     AX = 0035h
  2182.     BX = function
  2183.         FFFFh get current settings
  2184.         Return: AX = 0000h
  2185.             BH = style (see #1844)
  2186.             BL = size (see below)
  2187.             CH = threshold
  2188.             CL = active flag (00h disabled, 01h enabled)
  2189.             DX = delay
  2190.         other
  2191.         BH = pointer style (see #1844)
  2192.         BL = size (00h small "1", 01h medium "1.5", 02h large "2")
  2193.         CH = threshold (00h-64h)
  2194.         CL = active flag (00h disable size change, 01h enable)
  2195.         DX = delay (0000h-0064h)
  2196.         Return: AX = 0000h
  2197. Note:    not supported by Logitech driver v6.10
  2198. SeeAlso: AX=0012h,AX=002Ah
  2199.  
  2200. (Table 1844)
  2201. Values for pointer style:
  2202.  00h    normal
  2203.  01h    reverse
  2204.  02h    transparent
  2205. --------M-330042-----------------------------
  2206. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  2207.     AX = 0042h
  2208. Return: AX = status
  2209.         0000h MSMOUSE not installed
  2210.         0042h functions 42h, 50h, and 52h not supported
  2211.         FFFFh successful
  2212.         BX = buffer size in bytes for functions 50h and 52h
  2213. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2214. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  2215. --------M-330043-----------------------------
  2216. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
  2217.     AX = 0043h
  2218.     CX:BX -> configuration buffer (see #1845)
  2219.     DL = ???
  2220. Return: ???
  2221. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  2222.     this function is also supported by the Genius Mouse 9.06 driver
  2223.  
  2224. Format of Mouse Systems configuration buffer:
  2225. Offset    Size    Description    (Table 1845)
  2226.  00h    WORD    I/O port address
  2227.  02h    BYTE    ???
  2228.  03h    BYTE    interrupt number
  2229.  04h    BYTE    interrupt mask for interrupt controller
  2230.  05h  5 BYTEs    ???
  2231. --------M-330044CXCDEF-----------------------
  2232. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
  2233.     AX = 0044h
  2234.     CX = CDEFh
  2235. Return: AX = new state of "Ignore Application Acceleration Commands" flag
  2236. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2237. SeeAlso: AX=0045h
  2238. --------M-330045CXCDEF-----------------------
  2239. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
  2240.     AX = 0045h
  2241.     CX = CDEFh
  2242. Return: AX = new state of resolution doubling flag
  2243. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2244. SeeAlso: AX=0044h
  2245. --------M-330047-----------------------------
  2246. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
  2247.     AX = 0047h
  2248.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  2249. Return: ???
  2250. Note:    also supported by Genius Mouse 9.06 driver
  2251. SeeAlso: AX=0067h
  2252. --------M-330048BXCDEF-----------------------
  2253. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
  2254.     AX = 0048h
  2255.     BX = CDEFh
  2256. Return: CX = ???
  2257.     BH = ???
  2258.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  2259. Note:    also supported by Genius Mouse 9.06 driver
  2260. --------M-33004B-----------------------------
  2261. INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
  2262.     AX = 004Bh
  2263. Return: ES:DI -> signature/description string if installed
  2264. Note:    the signature string in v7.04d is
  2265.       "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  2266. --------M-33004CBXCDEF-----------------------
  2267. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
  2268.     AX = 004Ch
  2269.     BX = CDEFh
  2270. Note:    also supported by Genius Mouse 9.06
  2271. SeeAlso: AX=006Ch
  2272. --------M-33004D-----------------------------
  2273. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  2274.     AX = 004Dh
  2275. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
  2276. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  2277.       mouse drivers
  2278.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  2279.       follows the above copyright message (KYE Corp. manufactures the
  2280.       driver)
  2281. SeeAlso: AX=0024h,AX=006Dh,AX=0666h
  2282. --------M-33004F-----------------------------
  2283. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
  2284.     AX = 004Fh
  2285. Return: nothing
  2286. Note:    also supported by Genius Mouse 9.06
  2287. SeeAlso: AX=0043h,AX=0053h
  2288. --------M-330050-----------------------------
  2289. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  2290.     AX = 0050h
  2291.     BX = buffer size (ignored by some driver versions)
  2292.     ES:DX -> buffer
  2293. Return: AX = FFFFh if successful
  2294. Notes:    the buffer must be large enough to hold the entire state, or following
  2295.       data will be overwritten by state data in versions which ignore BX;
  2296.       use INT 33/AX=0042h to get the required size
  2297.     this function is also supported by the Genius Mouse 9.06 driver
  2298. SeeAlso: AX=0042h,AX=0052h
  2299. --------M-330052-----------------------------
  2300. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  2301.     AX = 0052h
  2302.     BX = buffer size (ignored by some driver versions)
  2303.     ES:DX -> buffer
  2304. Return: AX = FFFFh if successful
  2305. Note:    also supported by Genius Mouse 9.06 driver
  2306. SeeAlso: AX=0050h
  2307. --------M-330053-----------------------------
  2308. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
  2309.     AX = 0053h
  2310. Return: nothing
  2311. Note:    also supported by Genius Mouse 9.06
  2312. SeeAlso: AX=0043h,AX=004Fh
  2313. --------M-330054CXCDEF-----------------------
  2314. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
  2315.     AX = 0054h
  2316.     CX = CDEFh
  2317.     BX = new acceleration level (0-9)
  2318. Return: ???
  2319. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2320. SeeAlso: AX=005Ah
  2321. --------M-330055-----------------------------
  2322. INT 33 - Kraft Mouse - GET ???
  2323.     AX = 0055h
  2324. Return: CX = ???
  2325.     DX = ???
  2326.     ES = ???
  2327. --------M-330058-----------------------------
  2328. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2329.     AX = 0058h
  2330. Return: AX = CS of driver
  2331.     CX:BX = original INT 33 vector
  2332.     DX = ???
  2333. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2334. --------M-33005A-----------------------------
  2335. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
  2336.     AX = 005Ah
  2337.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  2338.     DX:SI -> buffer containing thresholds??? (CX words)
  2339.     DX:BX -> buffer containing acceleration values???
  2340.         (9*14h words, only first CX of each 14h used)
  2341.     ???
  2342. Return: CF clear
  2343.     ???
  2344. Note:    this function is also supported by Genius Mouse 9.06
  2345. SeeAlso: AX=0054h
  2346. --------M-330061BXCDEF-----------------------
  2347. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2348.     AX = 0061h
  2349.     BX = CDEFh
  2350. Return: CX = ???
  2351. Note:    also supported by Genius Mouse 9.06
  2352. --------M-330067-----------------------------
  2353. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
  2354.     AX = 0067h
  2355. Return: BL = number of buttons???
  2356. Note:    also supported by Genius Mouse 9.06
  2357. SeeAlso: AX=0047h
  2358. --------M-33006A-----------------------------
  2359. INT 33 U - ATI Mouse - INSTALLATION CHECK
  2360.     AX = 006Ah
  2361. Return: AL = AAh
  2362.     AH = ???
  2363.     BH = ???
  2364.     BL = ???
  2365.     CL = ???
  2366.     CH = ???
  2367. Program: ATI's MOUSE.COM and MOUSE.SYS are drivers for the mouse port found on
  2368.       some of ATI's video adapters
  2369. SeeAlso: AX=006Dh
  2370. --------M-33006C-----------------------------
  2371. INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
  2372.     AX = 006Ch
  2373.     BX = new IRQ (0003h or 0004h), or 0000h to get current values only
  2374.     CL = new IRQmask (sent to 8259)
  2375.     DX = new base I/O port
  2376. Return: BX = current IRQ
  2377.     DX = light pen state???
  2378. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2379.       TRUEDOX Technology Corporation
  2380. SeeAlso: AX=00A1h,AX=0666h
  2381. --------M-33006CBXCDEF-----------------------
  2382. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
  2383.     AX = 006Ch
  2384.     BX = CDEFh
  2385. Note:    also supported by Genius Mouse 9.06
  2386. SeeAlso: AX=004Ch
  2387. --------M-33006D-----------------------------
  2388. INT 33 - MS MOUSE - GET VERSION STRING
  2389.     AX = 006Dh
  2390. Return: ES:DI -> Microsoft version number of resident driver (see #1846)
  2391. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  2392.       drivers
  2393.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  2394.       Microsoft version as 7.00 even though they do not support any of the
  2395.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  2396.       (the Genius Mouse driver supports function 0026h, but it differs
  2397.       from the Microsoft function)
  2398.     the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
  2399.       but as 6.24 through AX=0024h
  2400. SeeAlso: AX=0024h,AX=004Dh,AX=006Ah,AX=266Ch
  2401.  
  2402. Format of Microsoft version number:
  2403. Offset    Size    Description    (Table 1846)
  2404.  00h    BYTE    major version
  2405.  01h    BYTE    minor version (BCD)
  2406. --------M-330070BXABCD-----------------------
  2407. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  2408.     AX = 0070h
  2409.     BX = ABCDh
  2410. Return: AX = ABCDh if installed
  2411.         BX:CX -> data structure (see #1847)
  2412. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  2413.     the v7.01 POPUP.COM and menu drivers also check for the signature
  2414.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  2415.     if POPUP is not loaded, the returned data structure contains the proper
  2416.       signature at offset 00h, but not at offset 08h
  2417.  
  2418. Format of Mouse Systems POPUP.COM data structure:
  2419. Offset    Size    Description    (Table 1847)
  2420.  00h    WORD    signature ABCDh
  2421.  02h    DWORD    pointer to info structure??? (see #1848)
  2422.  06h  2 BYTEs    ???
  2423.  08h    WORD    signature ABCDh
  2424.  
  2425. Format of Mouse Systems POPUP.COM info structure:
  2426. Offset    Size    Description    (Table 1848)
  2427.  00h    WORD    driver version
  2428.  02h  8 BYTEs    ???
  2429.  0Ah    WORD    segment of ???
  2430.     ???
  2431. --------M-330072BXABCD-----------------------
  2432. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2433.     AX = 0072h
  2434.     BX = ABCDh
  2435. Return: ???
  2436. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2437. --------M-330073BXCDEF-----------------------
  2438. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
  2439.     AX = 0073h
  2440.     BX = CDEFh
  2441.     ES:DX -> 3-byte buffer for button assignments
  2442. Return: CX = number of buttons???
  2443.     ES:DX buffer filled (default is "LMR")
  2444. Note:    also supported by Genius Mouse 9.06
  2445. SeeAlso: AX=0067h
  2446. --------M-3300A0-----------------------------
  2447. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE (3 button)
  2448.     AX = 00A0h
  2449. Return: nothing
  2450. Note:    this function is only available if the mouse mode is switchable
  2451.       through the power pins
  2452. SeeAlso: AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
  2453. --------M-3300A1-----------------------------
  2454. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE (2 button)
  2455.     AX = 00A1h
  2456. Return: nothing
  2457. Notes:    this function is only available if the mouse mode is switchable
  2458.       through the power pins
  2459.     this is the mouse driver for the Dell Dimension series of computers, by
  2460.       TRUEDOX Technology Corporation
  2461. SeeAlso: AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
  2462. --------M-3300A6-----------------------------
  2463. INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
  2464.     AX = 00A6h
  2465.     BX = new software resolution
  2466.         0001h 50-200 dpi
  2467.         0002h 200-400 dpi
  2468.         0003h 400-800 dpi
  2469. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2470.       TRUEDOX Technology Corporation
  2471. SeeAlso: AX=00A0h,AX=00A1h,AX=0666h
  2472. --------M-330100CX4752-----------------------
  2473. INT 33 - GRTMOUSE v1.00+ - INSTALLATION CHECK
  2474.     AX = 0100h
  2475.     CX = 4752h ('GR')
  2476.     DX = 544Dh ('TM')
  2477. Return: AX = 474Dh ('GM') if installed
  2478.         CX = version number (CH = major, CL = minor)
  2479. Program: GRTMOUSE is a graphical-cursor driver for textmode by Tommer Leyvand
  2480. SeeAlso: AX=0101h,AX=0102h,AX=0103h,AX=0104h
  2481. --------M-330101-----------------------------
  2482. INT 33 - GRTMOUSE v1.00+ - SET MOUSE CURSOR SHAPE
  2483.     AX = 0101h
  2484.     DS:SI -> 16-byte cursor pattern
  2485. Return: CF clear if successful
  2486. SeeAlso: AX=0100h,AX=0102h
  2487. --------M-330102-----------------------------
  2488. INT 33 - GRTMOUSE v1.00+ - GET MOUSE CURSOR SHAPE
  2489.     AX = 0102h
  2490.     ES:DI -> 16-byte buffer for cursor pattern
  2491. SeeAlso: AX=0100h,AX=0101h
  2492. --------M-330103-----------------------------
  2493. INT 33 - GRTMOUSE v1.00+ - SET ACTIVE CHARACTERS
  2494.     AX = 0103h
  2495.     CH,CL,DH,DL = ASCII codes to be remapped to display mouse pointer
  2496. Note:    the default active characters are D0h,D1h,D6h,D8h; the active
  2497.      characters should be in the range C0h to DFh
  2498. SeeAlso: AX=0100h,AX=0104h
  2499. --------M-330104-----------------------------
  2500. INT 33 - GRTMOUSE v1.00+ - GET ACTIVE CHARACTERS
  2501.     AX = 0104h
  2502. Return: CH,CL,DH,DL = ASCII codes for the active characters
  2503. SeeAlso: AX=0100h,AX=0103h
  2504. --------M-33012E-----------------------------
  2505. INT 33 - MS MOUSE v8.10+ - ???
  2506.     AX = 012Eh
  2507.     BL = ???
  2508. Return: AX = 0000h (MS)
  2509.     AX = FFFFh (ATI Mouse v7.04)
  2510. Note:    not supported by Logitech driver v6.10
  2511. SeeAlso: AX=002Eh,AX=022Eh
  2512. --------M-33022E-----------------------------
  2513. INT 33 - MS MOUSE v8.10+ - ???
  2514.     AX = 022Eh
  2515.     BL = ???
  2516. Return: AX = 0000h (MS)
  2517.     AX = FFFFh (ATI Mouse v7.04)
  2518. Note:    not supported by Logitech driver v6.10
  2519. SeeAlso: AX=002Eh,AX=012Eh
  2520. --------M-330666-----------------------------
  2521. INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
  2522.     AX = 0666h
  2523. Return: DX:AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
  2524. Note:    this is the mouse driver for the Dell Dimension series of computers,
  2525.       by TRUEDOX Technology Corporation
  2526. SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
  2527. --------M-33136C-----------------------------
  2528. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2529.     AX = 136Ch
  2530.     BX = ???
  2531. Return: AX = ???
  2532.     BX = ???
  2533. --------M-33146C-----------------------------
  2534. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  2535.     AX = 146Ch
  2536.     BL = function
  2537.         00h set ???
  2538.         BH = new value (zero/nonzero to clear/set)
  2539.         else get ???
  2540.         Return: ???
  2541. --------M-33156C-----------------------------
  2542. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  2543.     AX = 156Ch
  2544. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  2545.     ES:SI -> version string, terminated with CRLF
  2546. --------M-33166C-----------------------------
  2547. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2548.     AX = 166Ch
  2549.     BL = ???
  2550.         00h ???
  2551.         01h ???
  2552.         other ???
  2553.         BH = new value of ???
  2554.         Return: AX = FFFFh
  2555. --------M-33176C-----------------------------
  2556. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2557.     AX = 176Ch
  2558.     ???
  2559. Return: ???
  2560. --------M-33186C-----------------------------
  2561. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2562.     AX = 186Ch
  2563.     ???
  2564. Return: ???
  2565. --------M-33196C-----------------------------
  2566. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2567.     AX = 196Ch
  2568.     ???
  2569. Return: ???
  2570. --------M-331A6C-----------------------------
  2571. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2572.     AX = 1A6Ch
  2573. Return: AX = FFFFh
  2574.     BX = ???
  2575.     CX = ???
  2576. SeeAlso: AX=1B6Ch
  2577. --------M-331B6C-----------------------------
  2578. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  2579.     AX = 1B6Ch
  2580.     BX = new value for ??? (0000h-0003h)
  2581. Return: AX = FFFFh
  2582. SeeAlso: AX=1A6Ch
  2583. --------M-331C6C-----------------------------
  2584. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2585.     AX = 1C6Ch
  2586.     BX = ???
  2587.         <42h ???
  2588.         =42h ???
  2589.         >42h ???
  2590.         ES:DI -> ???
  2591.         Return: AX = ???
  2592. --------M-331D6C-----------------------------
  2593. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  2594.     AX = 1D6Ch
  2595. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  2596. SeeAlso: AX=1E6Ch
  2597. --------M-331E6C-----------------------------
  2598. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  2599.     AX = 1E6Ch
  2600.     BX = direction (0=north, 1=south, 2=east, 3=west)
  2601. SeeAlso: AX=1D6Ch
  2602. --------M-331F6C-----------------------------
  2603. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  2604.     AX = 1F6Ch
  2605. Return: BX = 0=off, 1=on
  2606.     CX = 1=low, 2=high
  2607. SeeAlso: AX=002Ch,AX=236Ch
  2608. --------M-33206C-----------------------------
  2609. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  2610.     AX = 206Ch
  2611.     BX = parameter (00h = right, FFh = left)
  2612. SeeAlso: AX=216Ch
  2613. --------M-33216C-----------------------------
  2614. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  2615.     AX = 216Ch
  2616. Return: BX = parameter (00h = right, FFh = left)
  2617. SeeAlso: AX=206Ch
  2618. --------M-33226C-----------------------------
  2619. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  2620.     AX = 226Ch
  2621. Note:    this only frees memory; does not restore hooked interrupts
  2622. --------M-33236C-----------------------------
  2623. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  2624.     AX = 236Ch
  2625.     BX = 0=off, 1=on
  2626.     CX = 1=low, 2=high
  2627. SeeAlso: AX=002Ch,AX=1F6Ch
  2628. --------M-33246C-----------------------------
  2629. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  2630.     AX = 246Ch
  2631.     ES:DX -> parameter table buffer (see #1849)
  2632. Return: AX = FFFFh if driver installed for serial mouse
  2633. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  2634.  
  2635. Format of Logitech Mouse parameter table:
  2636. Offset    Size    Description    (Table 1849)
  2637.  00h    WORD    baud rate divided by 100  (serial mouse only)
  2638.  02h    WORD    emulation          (serial mouse only)
  2639.  04h    WORD    report rate          (serial mouse only)
  2640.  06h    WORD    firmware revision      (serial mouse only)
  2641.  08h    WORD    00h              (serial mouse only)
  2642.  0Ah    WORD    port              (serial mouse only)
  2643.  0Ch    WORD    physical buttons
  2644.  0Eh    WORD    logical buttons
  2645. --------M-33256CBX0000-----------------------
  2646. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  2647.     AX = 256Ch
  2648.     BX = 0000h
  2649.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  2650. Return: AX = FFFFh if driver installed for serial mouse
  2651. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  2652. --------M-33256CBX0001-----------------------
  2653. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  2654.     AX = 256Ch
  2655.     BX = 0001h
  2656.     CX = emulation type (see #1850)
  2657. Return: AX = FFFFh if driver installed for serial mouse
  2658. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  2659.  
  2660. (Table 1850)
  2661. Values for Logitech mouse emulation type:
  2662.  00h    5 byte packed binary
  2663.  01h    3 byte packed binary
  2664.  02h    hexadecimal
  2665.  03h    relative bit pad
  2666.  04h    not supported
  2667.  05h    MM Series
  2668.  06h    not supported
  2669.  07h    Microsoft
  2670. --------M-33256CBX0002-----------------------
  2671. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  2672.     AX = 256Ch
  2673.     BX = 0002h
  2674.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  2675. Return: AX = FFFFh if driver installed for serial mouse
  2676. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  2677. --------M-33256CBX0003-----------------------
  2678. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  2679.     AX = 256Ch
  2680.     BX = 0003h
  2681.     CX = port (1, 2)
  2682. Return: AX = FFFFh if driver installed for serial mouse
  2683. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  2684. --------M-33256CBX0004-----------------------
  2685. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  2686.     AX = 256Ch
  2687.     BX = 0004h
  2688.     CX = buttons (2, 3)
  2689. Return: AX = FFFFh if driver installed for serial mouse
  2690. SeeAlso: AX=246Ch,AX=276Ch
  2691. --------M-33266C-----------------------------
  2692. INT 33 - LOGITECH MOUSE - GET VERSION???
  2693.     AX = 266Ch
  2694. Return: BX = 'SS'
  2695.     CH = '4'  major version number
  2696.     CL = '1'  minor version number
  2697. SeeAlso: AX=006Dh
  2698. --------M-33276C-----------------------------
  2699. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  2700.     AX = 276Ch
  2701. SeeAlso: AX=256Ch
  2702. --------M-333000-----------------------------
  2703. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  2704.     AX = 3000h
  2705. Return: AX = FFFFh if installed
  2706.         BX = version number (BH = major, BL = minor)
  2707. Program: SMD is a programmer's library by Andy Hakim which provides a
  2708.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  2709.       SMD-based TSR which replaces the block mouse cursor in text
  2710.       applications.
  2711. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  2712. --------M-333001-----------------------------
  2713. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  2714.     AX = 3001h
  2715. Return: AX = status (0000h = disabled, 0001h = enabled)
  2716. Note:    SMD remains disabled if running under Desqview or in graphics mode
  2717. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  2718. --------M-333002-----------------------------
  2719. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  2720.     AX = 3002h
  2721. Return: AX = status (0000h = disabled, 0001h = enabled)
  2722. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  2723. --------M-333003-----------------------------
  2724. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  2725.     AX = 3003h
  2726.     BL = data structure selector
  2727.         00h Primary Bitmap (used for 25 line mode) (see #1851)
  2728.         01h Secondary Bitmap (used for 43/50 line modes) (see #1851)
  2729.         02h Sacrifice Character Map (see #1852)
  2730.         03h Program Information (see #1853)
  2731. Return: ES:DX -> selected data structure
  2732. SeeAlso: AX=3000h
  2733.  
  2734. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
  2735. Offset    Size    Description    (Table 1851)
  2736.  00h    BYTE    vertical size of bitmap (00h - 10h)
  2737.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  2738.  02h    BYTE    vertical hotspot position (00h - 10h)
  2739.  03h    BYTE    horizontal hotspot position (00h - 10h)
  2740.  04h 16 WORDs    cursor bitmap data
  2741.  14h 16 WORDs    screen bitmap data
  2742.  
  2743. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
  2744. Offset    Size    Description    (Table 1852)
  2745.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  2746.  01h    BYTE    actual character for the corresponding position on the screen
  2747.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  2748.  03h    BYTE         | 0h | 1h | 2h |      cursor
  2749.  04h    BYTE         |----+----+----|
  2750.  05h    BYTE         | 3h | 4h | 5h |
  2751.  06h    BYTE         |----+----+----|
  2752.  07h    BYTE         | 6h | 7h | 8h |
  2753.  08h    BYTE         +--------------+
  2754.  
  2755. Format of Program Information [SMD_INFO_STRUCT]:
  2756. Offset    Size    Description    (Table 1853)
  2757.  00h    WORD    segment of old interrupt 33h handler
  2758.  02h    WORD    offset of old interrupt 33h handler
  2759.  04h    WORD    PSP of SMD
  2760.  06h    BYTE    ENABLE/DISABLE manual setting status
  2761.  07h    BYTE    ENABLE/DISABLE internal usage status
  2762. --------M-333004-----------------------------
  2763. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2764.     AX = 3004h
  2765. SeeAlso: AX=3000h
  2766. --------M-333005-----------------------------
  2767. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2768.     AX = 3005h
  2769. SeeAlso: AX=3000h
  2770. --------M-334F00-----------------------------
  2771. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2772.     AX = 4F00h
  2773. Return: AX = 004Fh if supported
  2774.     BX = ???
  2775.     ES:DI -> ???
  2776. SeeAlso: AX=4F01h
  2777. --------M-334F01-----------------------------
  2778. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2779.     AX = 4F01h
  2780.     ES = ???
  2781. Return: AX = 004Fh if supported
  2782.     ES:DI -> ???
  2783. SeeAlso: AX=4F00h
  2784. --------M-336F00-----------------------------
  2785. INT 33 - Hewlett Packard - HP MOUSE DRIVER INSTALLATION CHECK
  2786.     AX = 6F00h
  2787.     BX <> 4850h
  2788. Return: BX = 4850h ('HP') if mouse driver written by Hewlett Packard
  2789. SeeAlso: INT 10/AX=6F00h,INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h
  2790. --------M-338800-----------------------------
  2791. INT 33 U - InfoTrack IMOUSE.COM - UNHOOK MOUSE IRQ
  2792.     AX = 8800h
  2793.     BX <> FFFFh
  2794. Note:    the code is written to expect a subfunction number in AL, but only
  2795.       function 00h has been implemented
  2796. SeeAlso: AX=8800h/BX=FFFFh
  2797. --------M-338800BXFFFF-----------------------
  2798. INT 33 U - InfoTrack IMOUSE.COM - GET ACTIVE IRQ
  2799.     AX = 8800h
  2800.     BX = FFFFh
  2801. Return: BL = number of IRQ being used by the mouse
  2802. SeeAlso: AX=8800h
  2803. --------T-33FFE6-----------------------------
  2804. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  2805.     AX = FFE6h
  2806.     CX = length of buffer
  2807.     ES:DI -> buffer for program name
  2808. Return: ES:DI buffer filled
  2809. Program: Switch-It is a task switcher supporting up to 100 programs
  2810.       simultaneously by Better Software Technology, Inc.
  2811. --------T-33FFE7-----------------------------
  2812. INT 33 - Switch-It v3.23 - GET ???
  2813.     AX = FFE7h
  2814. Return: AX = ???
  2815. --------T-33FFE8-----------------------------
  2816. INT 33 - Switch-It v3.23 - ???
  2817.     AX = FFE8h
  2818.     CX = length of name including terminating NUL
  2819.     DS:SI -> ASCIZ program pathname
  2820. --------T-33FFE9-----------------------------
  2821. INT 33 - Switch-It v3.23 - SET ???
  2822.     AX = FFE9h
  2823.     BX = ???
  2824. --------T-33FFEA-----------------------------
  2825. INT 33 - Switch-It v3.23 - SET ???
  2826.     AX = FFEAh
  2827.     BL = ???
  2828. --------T-33FFEB-----------------------------
  2829. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2830.     AX = FFEBh
  2831. --------T-33FFEC-----------------------------
  2832. INT 33 - Switch-It v3.23 - SET ???
  2833.     AX = FFECh
  2834.     BL = ???
  2835. --------T-33FFED-----------------------------
  2836. INT 33 - Switch-It v3.23 - GET ???
  2837.     AX = FFEDh
  2838. Return: AX = ??? (0001h)
  2839.     BX = ???
  2840. Program: Switch-It is a task switcher supporting up to 100 programs
  2841.       simultaneously by Better Software Technology, Inc.
  2842. --------T-33FFEE-----------------------------
  2843. INT 33 - Switch-It v3.23 - GET ???
  2844.     AX = FFEEh
  2845. Return: AX = ???
  2846. --------T-33FFEF-----------------------------
  2847. INT 33 - Switch-It v3.23 - GET ???
  2848.     AX = FFEFh
  2849. Return: BX:AX -> ???
  2850. --------T-33FFF0-----------------------------
  2851. INT 33 - Switch-It v3.23 - SET ???
  2852.     AX = FFF0h
  2853.     BL = ???
  2854. --------T-33FFF1-----------------------------
  2855. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  2856.     AX = FFF1h
  2857. Return: BX:AX -> ASCIZ pathname of configuration file
  2858. Program: Switch-It is a task switcher supporting up to 100 programs
  2859.       simultaneously by Better Software Technology, Inc.
  2860. --------T-33FFF2-----------------------------
  2861. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2862.     AX = FFF2h
  2863. Return: AL = 01h
  2864. --------T-33FFF3-----------------------------
  2865. INT 33 - Switch-It v3.23 - GET ???
  2866.     AX = FFF3h
  2867. Return: AX = ???
  2868. --------T-33FFF4-----------------------------
  2869. INT 33 - Switch-It v3.23 - SET ???
  2870.     AX = FFF4h
  2871.     BX = ???
  2872.     CX = ???
  2873. --------T-33FFF5-----------------------------
  2874. INT 33 - Switch-It v3.23 - GET ???
  2875.     AX = FFF5h
  2876. Return: AX = ???
  2877. --------T-33FFF6-----------------------------
  2878. INT 33 - Switch-It v3.23 - GET ???
  2879.     AX = FFF6h
  2880. Return: AX = ???
  2881. --------T-33FFF7-----------------------------
  2882. INT 33 - Switch-It v3.23 - GET ???
  2883.     AX = FFF7h
  2884.     BX = index of ???
  2885. Return: AX = ???
  2886. --------T-33FFF8-----------------------------
  2887. INT 33 - Switch-It v3.23 - ???
  2888.     AX = FFF8h
  2889.     BX = ???
  2890.     CX = length of program name, including terminating NUL
  2891.     DS:SI -> ASCIZ program pathname
  2892. Return: ???
  2893. Program: Switch-It is a task switcher supporting up to 100 programs
  2894.       simultaneously by Better Software Technology, Inc.
  2895. --------T-33FFF9-----------------------------
  2896. INT 33 - Switch-It v3.23 - NOP
  2897.     AX = FFF9h
  2898. --------T-33FFFA-----------------------------
  2899. INT 33 - Switch-It v3.23 - SET ???
  2900.     AX = FFFAh
  2901.     BX = index of program
  2902. SeeAlso: AX=FFFBh,AX=FFFCh
  2903. --------T-33FFFB-----------------------------
  2904. INT 33 - Switch-It v3.23 - GET ???
  2905.     AX = FFFBh
  2906.     BX = index of program
  2907. Return: AX = ??? (0000h or 0001h)
  2908. SeeAlso: AX=FFFAh,AX=FFFCh
  2909. --------T-33FFFC-----------------------------
  2910. INT 33 - Switch-It v3.23 - CLEAR ???
  2911.     AX = FFFCh
  2912.     BX = index of program
  2913. SeeAlso: AX=FFFAh,AX=FFFCh
  2914. --------T-33FFFD-----------------------------
  2915. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  2916.     AX = FFFDh
  2917. Return: AX = first available segment???
  2918.     BX = paragraph of top of conventional memory
  2919.     DX = PSP segment of SI.EXE
  2920. --------T-33FFFE-----------------------------
  2921. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  2922.     AX = FFFEh
  2923. Return: BX = ???
  2924.     DX = 5349h ("SI")
  2925. --------T-33FFFF-----------------------------
  2926. INT 33 - Switch-It v3.23 - ???
  2927.     AX = FFFFh
  2928.     BX = ???
  2929. Program: Switch-It is a task switcher supporting up to 100 programs
  2930.       simultaneously by Better Software Technology, Inc.
  2931. --------r-34---------------------------------
  2932. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  2933. Desc:    this interrupt is used to emulate floating-point instructions with
  2934.       an opcode of D8h
  2935. Note:    the floating-point emulators in Borland and Microsoft languages and
  2936.       Lahey FORTRAN use this interrupt
  2937. SeeAlso: INT 35,INT 3E
  2938. --------r-35---------------------------------
  2939. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  2940. Desc:    this interrupt is used to emulate floating-point instructions with
  2941.       an opcode of D9h
  2942. Note:    the floating-point emulators in Borland and Microsoft languages and
  2943.       Lahey FORTRAN use this interrupt
  2944. SeeAlso: INT 34,INT 36
  2945. --------r-36---------------------------------
  2946. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  2947. Desc:    this interrupt is used to emulate floating-point instructions with
  2948.       an opcode of DAh
  2949. Note:    the floating-point emulators in Borland and Microsoft languages and
  2950.       Lahey FORTRAN use this interrupt
  2951. SeeAlso: INT 35,INT 37
  2952. --------r-37---------------------------------
  2953. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  2954. Desc:    this interrupt is used to emulate floating-point instructions with
  2955.       an opcode of DBh
  2956. Note:    the floating-point emulators in Borland and Microsoft languages and
  2957.       Lahey FORTRAN use this interrupt
  2958. SeeAlso: INT 36,INT 38
  2959. --------r-38---------------------------------
  2960. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  2961. Desc:    this interrupt is used to emulate floating-point instructions with
  2962.       an opcode of DCh
  2963. Note:    the floating-point emulators in Borland and Microsoft languages and
  2964.       Lahey FORTRAN use this interrupt
  2965. SeeAlso: INT 37,INT 39
  2966. --------O-38---------------------------------
  2967. INT 38 - PC-MOS/386 v3.0 - API
  2968. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  2969.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  2970.       12h
  2971. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  2972. --------r-39---------------------------------
  2973. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  2974. Desc:    this interrupt is used to emulate floating-point instructions with
  2975.       an opcode of DDh
  2976. Note:    the floating-point emulators in Borland and Microsoft languages and
  2977.       Lahey FORTRAN use this interrupt
  2978. SeeAlso: INT 38,INT 3A
  2979. --------r-3A---------------------------------
  2980. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  2981. Desc:    this interrupt is used to emulate floating-point instructions with
  2982.       an opcode of DEh
  2983. Note:    the floating-point emulators in Borland and Microsoft languages and
  2984.       Lahey FORTRAN use this interrupt
  2985. SeeAlso: INT 39,INT 3B
  2986. --------r-3B---------------------------------
  2987. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  2988. Desc:    this interrupt is used to emulate floating-point instructions with
  2989.       an opcode of DFh
  2990. Note:    the floating-point emulators in Borland and Microsoft languages and
  2991.       Lahey FORTRAN use this interrupt
  2992. SeeAlso: INT 3A,INT 3C
  2993. --------r-3C---------------------------------
  2994. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  2995. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2996.       Lahey FORTRAN use this interrupt
  2997.     the generated code is  CD 3C xy mm ....
  2998.       where xy is a modified ESC instruction and mm is the modR/M byte.
  2999.       The xy byte appears to be encoded as
  3000.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  3001.       where "ss" specifies the segment override:
  3002.         00 -> DS:
  3003.         01 -> SS:
  3004.         10 -> CS:
  3005.         11 -> ES:
  3006. SeeAlso: INT 3B,INT 3D
  3007. --------r-3D---------------------------------
  3008. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  3009. Notes:    the floating-point emulators in Borland and Microsoft languages and
  3010.       Lahey FORTRAN use this interrupt
  3011.     this vector is modified but not restored by Direct Access v4.0, and
  3012.       may be left dangling by other programs written with the same version
  3013.       of compiled BASIC
  3014. SeeAlso: INT 3C,INT 3E
  3015. --------r-3E---------------------------------
  3016. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  3017. Notes:    the two bytes following the INT 3E instruction are the subcode
  3018.       (see #1854) and a NOP (90h), except for subcodes DCh and DEh, where
  3019.       the second byte is a register count (01h-08h)
  3020.     this vector is modified but not restored by Direct Access v4.0, and
  3021.       may be left dangling by other programs written with the same version
  3022.       of compiled BASIC
  3023. SeeAlso: INT 3D
  3024.  
  3025. (Table 1854)
  3026. Values for Borland floating-point shortcut subcode:
  3027. Subcode        Function
  3028.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  3029.       top of the stack prior to the INT 3E with the 8087 register contents
  3030.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  3031.       of 8086 stack
  3032.  E0h    round TOS and R1 to single precision, compare, pop twice
  3033.       returns AX=8087 status word, FLAGS=8087 condition bits
  3034.  E2h    round TOS and R1 to double precision, compare, pop twice
  3035.       returns AX=8087 status word, FLAGS=8087 condition bits
  3036.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  3037.       field to the undocumented value 01h; this results in actually
  3038.       rounding to single precision
  3039.  E4h    compare TOS/R1 with two POP's
  3040.       returns FLAGS=8087 condition bits
  3041.  E6h    compare TOS/R1 with POP
  3042.       returns FLAGS=8087 condition bits
  3043.  E8h    FTST (check TOS value)
  3044.       returns FLAGS=8087 condition bits
  3045.  EAh    FXAM (check TOS value)
  3046.       returns AX=8087 status word
  3047.  ECh    sine(ST0)
  3048.  EEh    cosine(ST0)
  3049.  F0h    tangent(ST0)
  3050.  F2h    arctangent(ST0)
  3051.  F4h    ST0 = ln(ST0)
  3052.  F6h    ST0 = log2(ST0)
  3053.  F8h    ST0 = log10(ST0)
  3054.  FAh    ST0 = e**ST0
  3055.  FCh    ST0 = 2**ST0
  3056.  FEh    ST0 = 10**ST0
  3057. --------r-3F---------------------------------
  3058. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  3059. Notes:    INT 3F is the default, and may be overridden while linking
  3060.     this vector is modified but not restored by Direct Access v4.0, and
  3061.       may be left dangling by other programs written with the same version
  3062.       of compiled BASIC
  3063. SeeAlso: INT FE"OVERLAY"
  3064. --------r-3F---------------------------------
  3065. INT 3F - Microsoft Dynamic Link Library manager
  3066. SeeAlso: INT 21/AH=4Bh
  3067. --------B-40---------------------------------
  3068. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  3069. SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
  3070. --------h-40---------------------------------
  3071. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  3072. SeeAlso: INT 41"Z100",INT FF"Z100"
  3073. --------O-40---------------------------------
  3074. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  3075.     AL = operation
  3076.         00h close file
  3077.         40h open file for reading
  3078.         80h open file for writing
  3079.         C0h open file for random access
  3080.     DS:BX -> CR-terminated filename
  3081. Return: AL = file handle (00h if file closed or could not be opened)
  3082. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  3083.       6502-based Master 128 which uses the original CPU as an I/O processor
  3084. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  3085. --------h-40---------------------------------
  3086. INT 40 - TI Professional PC - IRQ0 
  3087. Note:    on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
  3088.       that IBM connects to IRQ2
  3089. SeeAlso: INT 0A"IRQ2",INT 41"TI Professional"
  3090. --------B-41---------------------------------
  3091. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  3092. Notes:    the default parameter table array is located at F000h:E401h in 100%
  3093.       compatible BIOSes; the pointer may be overridden by the hard disk
  3094.       controller's BIOS to support drive formats unknown to the ROM BIOS
  3095.     not used by some PS/2 models
  3096. SeeAlso: #1855,INT 13/AH=09h,INT 1E,INT 46,INT 60"Adaptec",INT C0"AMI"
  3097.  
  3098. Format of fixed disk parameters:
  3099. Offset    Size    Description    (Table 1855)
  3100.  00h    WORD    number of cylinders
  3101.  02h    BYTE    number of heads
  3102.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  3103.  05h    WORD    starting write precompensation cylinder number
  3104.  07h    BYTE    maximum ECC burst length (XT only)
  3105.  08h    BYTE    control byte (see #1856,#1857)
  3106.  09h    BYTE    standard timeout (XT only, 0 for others)
  3107.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  3108.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  3109.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  3110.  0Eh    BYTE    number of sectors per track (AT and later only)
  3111.  0Fh    BYTE    reserved
  3112. SeeAlso: #0179,#0181
  3113.  
  3114. Bitfields for XT fixed disk control byte:
  3115. Bit(s)    Description    (Table 1856)
  3116.  2-0    drive step speed
  3117.     000  3ms
  3118.     100  200ms
  3119.     101  70ms (default)
  3120.     110  3ms
  3121.     111  3ms
  3122.  5-3    unused
  3123.  6    disable ECC retries
  3124.  7    disable access retries
  3125.  
  3126. Bitfields for AT fixed disk control byte:
  3127. Bit(s)    Description    (Table 1857)
  3128.  0    unused
  3129.  1    reserved (0)  (disable IRQ)
  3130.  2    reserved (0)  (no reset)
  3131.  3    set if more than 8 heads
  3132.  4    always 0
  3133.  5    set if manufacturer's defect map on max cylinder+1  (AT and later only)
  3134.  6    disable ECC retries
  3135.  7    disable access retries
  3136. --------h-41---------------------------------
  3137. INT 41 - Z100 - Master 8259 - Processor Swap
  3138. SeeAlso: INT 40"Z100",INT 42"Z100"
  3139. --------h-41---------------------------------
  3140. INT 41 - TI Professional PC - IRQ1
  3141. Note:    on the TI Pro, IRQ1 is connected to the same pin on the expansion bus
  3142.       that IBM connects to IRQ3
  3143. SeeAlso: INT 0B"IRQ3",INT 40"TI Professional",INT 42"TI Professional"
  3144. --------O-41---------------------------------
  3145. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  3146.     AL = function
  3147.         01h put bytes sequentially
  3148.         02h put bytes, ignoring sequential pointer
  3149.         03h get bytes sequentially
  3150.         04h get bytes, ignoring sequential pointer
  3151.         05h get media title and boot option
  3152.         06h get current device and directory
  3153.         07h get current library and device
  3154.         08h search directory
  3155.     DS:BX -> control block (see #1858)
  3156. Return: CF clear if successful
  3157.     CF set on error
  3158.     AL = 00h if operation attempted
  3159.     AL unchanged if unsupported function
  3160. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  3161.  
  3162. Format of BBC Master control block:
  3163. Offset    Size    Description    (Table 1858)
  3164.  00h    BYTE    file handle
  3165.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  3166.  05h    DWORD    number of bytes to be transferred
  3167.  09h    DWORD    transfer address
  3168. --------G-410000-----------------------------
  3169. INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
  3170.     AX = 0000h
  3171.     DS:DX -> character
  3172. Note:    the kernel calls this function when it wants the user program to
  3173.       output a character
  3174. SeeAlso: AX=0001h
  3175. --------G-410001-----------------------------
  3176. INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
  3177.     AX = 0001h
  3178. Return: AL = character    
  3179. Note:    the kernel calls this function when it needs to input a character
  3180. SeeAlso: AX=0000h
  3181. --------G-41000D-----------------------------
  3182. INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
  3183.     AX = 000Dh
  3184. SeeAlso: AX=000Eh
  3185. --------G-41000E-----------------------------
  3186. INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
  3187.     AX = 000Eh
  3188. SeeAlso: AX=000Dh
  3189. --------G-410012-----------------------------
  3190. INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
  3191.     AX = 0012h
  3192.     DS:SI -> string (Windows 3.0)
  3193.     ES:SI -> string (Windows 3.1)
  3194. Return: nothing???
  3195. Note:    this function is called by the kernel when it wants to output a
  3196.       string through the debugger
  3197. SeeAlso: AX=0050h,INT 68/AH=47h
  3198. --------G-41004F-----------------------------
  3199. INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
  3200.     AX = 004Fh
  3201. Return: AX = F386h if debugger is present
  3202. SeeAlso: INT 68/AX=4400h
  3203. --------G-410050-----------------------------
  3204. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  3205.     AX = 0050h
  3206.     BX = segment number in executable (0-based)
  3207.     CX = selector
  3208.     DX = instance handle
  3209.     SI = segment flags (0=code, 1=data)
  3210.     ES:DI -> module name of owner
  3211. Return: ???
  3212. SeeAlso: AX=0012h,AX=004Fh
  3213. --------G-410051-----------------------------
  3214. INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
  3215.     AX = 0051h
  3216.     ???
  3217. Return: ???
  3218. SeeAlso: AX=0050h,AX=0052h
  3219. --------G-410052-----------------------------
  3220. INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
  3221.     AX = 0052h
  3222.     BX = freed selector
  3223. SeeAlso: AX=0050h,AX=0051h,AX=005Ch
  3224. --------G-410059-----------------------------
  3225. INT 41 CPU - MS Windows debugging kernel - LOAD TASK
  3226.     AX = 0059h
  3227.     ???:BX = CS:IP of new task's starting point
  3228. --------G-41005C-----------------------------
  3229. INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
  3230.     AX = 005Ch
  3231.     BX = freed selector
  3232. Note:    called only when KERNEL starts, once for CS and once for the DS alias
  3233.       to CS
  3234. SeeAlso: AX=0052h
  3235. --------G-410060-----------------------------
  3236. INT 41 CPU - MS Windows debugging kernel -  END OF SEGMENT LOAD
  3237.     AX = 0060h
  3238.     ???
  3239. Return: ???
  3240. SeeAlso: AX=0061h
  3241. --------G-410061-----------------------------
  3242. INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
  3243.     AX = 0061h
  3244.     ???
  3245. Return: ???
  3246. SeeAlso: AX=0060h
  3247. --------G-410062-----------------------------
  3248. INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
  3249.     AX = 0062h
  3250. STACK:    BYTE    exit code
  3251. Return: ???
  3252.     STACK unchanged???
  3253. SeeAlso: AX=0064h
  3254. --------G-410063-----------------------------
  3255. INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
  3256.     AX = 0063h
  3257. --------G-410064-----------------------------
  3258. INT 41 CPU - MS Windows debugging kernel - DLL LOADED
  3259.     AX = 0064h
  3260.     CX:BX = DLL entry point CS:IP
  3261.     SI = module handle
  3262. SeeAlso: AX=0062h,AX=0065h
  3263. --------G-410065-----------------------------
  3264. INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
  3265.     AX = 0065h
  3266.     ES = module handle
  3267. SeeAlso: AX=0064h
  3268. --------V-42---------------------------------
  3269. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  3270. Desc:    contains the address of the original INT 10 handler which an EGA+
  3271.       video adapter replaces with its own on-board BIOS code
  3272. SeeAlso: INT 10
  3273. Note:    not used by PS/2 built-in VGA or XGA
  3274. --------h-42---------------------------------
  3275. INT 42 - Z100 - Master 8259 - Timer
  3276. SeeAlso: INT 41"Z100",INT 43"Z100"
  3277. --------h-42---------------------------------
  3278. INT 42 - TI Professional PC - IRQ2
  3279. Note:    on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
  3280.       that IBM connects to IRQ4
  3281. SeeAlso: INT 0C"IRQ4",INT 41"TI Professional",INT 43"TI Professional"
  3282. --------b-42---------------------------------
  3283. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  3284. Note:    if the second WD1002 controller in the system finds INT 40 already in
  3285.       use, it uses this vector to cascade to the first controller's BIOS
  3286. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  3287. --------O-42---------------------------------
  3288. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  3289.     AL = byte to be written
  3290.     BH = file handle
  3291. Return: flags destroyed
  3292. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  3293. --------V-427500-----------------------------
  3294. INT 42 U - Toshiba laptops - ???
  3295.     AX = 7500h
  3296.     BL = ??? (00h or 01h)
  3297. Return: ???
  3298. Note:    used by Toshiba utility VCHAD.EXE
  3299. SeeAlso: AX=7501h,AX=7503h
  3300. --------V-427501-----------------------------
  3301. INT 42 U - Toshiba laptop - GET ??? DATA
  3302.     AX = 7501h
  3303.     DS:DI -> data area to be filled ???
  3304. Return: area filled with data ???
  3305. Note:    used by Toshiba utility VCHAD.EXE
  3306. SeeAlso: AX=7500h,AX=7502h,AX=7503h
  3307. --------V-427502-----------------------------
  3308. INT 42 U - Toshiba laptops - SET ??? DATA
  3309.     AX = 7502h
  3310.     DS:DI -> data area ???
  3311. Return: ???
  3312. Note:    used by Toshiba utility VCHAD.EXE
  3313. SeeAlso: AX=7501h,AX=7503h
  3314. --------V-427503-----------------------------
  3315. INT 42 - Toshiba laptops - GET DISPLAY STATUS
  3316.     AX = 7503h
  3317. Return: AX = 7575h if supported
  3318.     CX = 0001h if supported
  3319.     BH = display type (00h color, 03h monochrome)
  3320.     BL = display state
  3321.         01h internal LCD display is active
  3322.         02h external VGA display is active
  3323.         03h both displays active / DeskStation display mode enabled
  3324.         (not possible on all machines)
  3325. Note:    used by VCHAD.EXE and supported by all Toshiba VGA laptops
  3326.       (string "TOSHIBA " at F000:E010h should be checked before call)
  3327.     INT 42 normally points to F000:F065h but may be redirected by QEMM386
  3328. SeeAlso: AX=7500h,AX=7504h,INT 15/AH=C0h
  3329. --------V-427504-----------------------------
  3330. INT 42 U - Toshiba laptops - ???
  3331.     AX = 7504h
  3332.     BL = ???
  3333. Return: BH = ???
  3334. Note:    used by Toshiba utility VCHAD.EXE
  3335. SeeAlso: AX=7500h,AX=7503h
  3336. --------V-43---------------------------------
  3337. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  3338. Desc:    points at graphics data for characters 00h-7Fh of the current font
  3339.       in 8x8 dot modes, graphics data for all characters in 8x14 and 8x16
  3340.       modes
  3341. Note:    this is not a callable vector!
  3342. SeeAlso: INT 06"no-name",INT 1F,INT 44"VIDEO"
  3343. --------h-43---------------------------------
  3344. INT 43 - Z100 - Master 8259 - Slave 8259 input
  3345. Note:    slave runs in special fully nested mode
  3346. SeeAlso: INT 42"Z100",INT 44"Z100"
  3347. --------h-43---------------------------------
  3348. INT 43 - TI Professional PC - IRQ3 - TIMER1 25ms INTERVAL INTERRUPT
  3349. SeeAlso: INT 0B"IRQ3",INT 42"TI Professional",INT 44"TI Professional"
  3350. SeeAlso: INT 58"TI Professional"
  3351. --------O-43---------------------------------
  3352. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  3353.     BH = file handle
  3354. Return: CF clear if successful
  3355.         AL = byte read from file
  3356.     CF set on error
  3357. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  3358. --------V-44---------------------------------
  3359. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  3360. Desc:    this vector points at graphics data for current character font
  3361. SeeAlso: INT 1F,INT 43"VIDEO"
  3362. --------N-44---------------------------------
  3363. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  3364. --------I-44---------------------------------
  3365. INT 44 - IBM 3270-PC High Level Language API
  3366.     DS:SI -> parameter control block
  3367. --------h-44---------------------------------
  3368. INT 44 - Z100 - Master 8259 - Serial A
  3369. SeeAlso: INT 43"Z100",INT 45"Z100"
  3370. --------h-44---------------------------------
  3371. INT 44 - TI Professional PC - IRQ4
  3372. Note:    on the TI Pro, IRQ4 is connected to the same pin on the expansion bus
  3373.       that IBM connects to IRQ5
  3374. SeeAlso: INT 0D"IRQ5",INT 43"TI Professional",INT 45"TI Professional"
  3375. --------v-44---------------------------------
  3376. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  3377. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  3378. --------O-4400-------------------------------
  3379. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  3380.     AH = 00h
  3381.     AL = function
  3382.         00h get current filing system
  3383.         Return: AL = filing system (see #1859)
  3384.         01h get address of commandline tail
  3385.         Return: BX buffer filled with address of command tail in I/O
  3386.                   processor address space (use INT 4A/AL=05h to
  3387.                   retrieve)
  3388.         FFh flush all files onto secondary storage
  3389.     BX -> 4-byte data buffer
  3390. Note:    the commandline tail is terminated with a carriage return (0Dh)
  3391. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  3392.  
  3393. (Table 1859)
  3394. Values for BBC Master filing system:
  3395.  00h    none
  3396.  01h    1200 bps cassette
  3397.  02h    300 bps cassette
  3398.  03h    ROM FS
  3399.  04h    DFS
  3400.  05h    ANFS/NFS
  3401.  06h    TFS
  3402.  08h    ADFS
  3403. --------O-44---------------------------------
  3404. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  3405.     AH = nonzero file handle
  3406.     AL = function
  3407.         00h get sequential pointer for file
  3408.         01h set sequential pointer for file
  3409.         02h get length of file
  3410.     BX -> 4-byte data buffer
  3411. Return: BX buffer updated if appropriate
  3412. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  3413. --------h-45---------------------------------
  3414. INT 45 - Z100 - Master 8259 - Serial B
  3415. SeeAlso: INT 44"Z100",INT 46"Z100"
  3416. --------h-45---------------------------------
  3417. INT 45 - TI Professional PC - IRQ5
  3418. Note:    on the TI Pro, IRQ5 is connected to the same pin on the expansion bus
  3419.       that IBM connects to IRQ6
  3420. SeeAlso: INT 0E"IRQ6",INT 44"TI Professional",INT 46"TI Professional"
  3421. --------O-45---------------------------------
  3422. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  3423.     AL = function
  3424.         00h save block of memory as file
  3425.         01h update directory entry for existing file
  3426.         02h set load address for existing file
  3427.         03h set execution address for existing file
  3428.         04h set attributes for existing file
  3429.         05h read directory
  3430.         06h delete file
  3431.         FFh load file
  3432.     DS:BX -> control block (see #1860)
  3433. Return: FLAGS destroyed
  3434.     AL = file type
  3435.         00h not found
  3436.         01h file found
  3437.         02h directory found
  3438.         FFh protected file
  3439. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  3440.  
  3441. Format of BBC Master control block:
  3442. Offset    Size    Description    (Table 1860)
  3443.  00h    WORD    address of CR-terminated filename
  3444.  02h    DWORD    load address of file
  3445.  06h    DWORD    execution address of file
  3446.  0Ah    DWORD    start address of data to save
  3447.  0Eh    DWORD    end address of data to save, or file attributes
  3448.         file attributes in low byte (see #1861)
  3449.         other three bytes are filing-system specific file attributes
  3450.  
  3451. Bitfields for BBC Master file attributes:
  3452. Bit(s)    Description    (Table 1861)
  3453.  0    no owner read access
  3454.  1    no owner write access
  3455.  2    not executable by owner
  3456.  3    not deletable by owner
  3457.  4    no public read access
  3458.  5    no public write access
  3459.  6    not executable with public access
  3460.  7    not deletable with public access
  3461. --------B-46---------------------------------
  3462. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  3463. Note:    not used by some PS/2 models
  3464. SeeAlso: INT 13/AH=09h,INT 41,INT 60"Adaptec",INT C0"AMI"
  3465. --------h-46---------------------------------
  3466. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  3467. SeeAlso: INT 45"Z100",INT 47"Z100"
  3468. --------h-46---------------------------------
  3469. INT 46 - TI Professional PC - IRQ6
  3470. Note:    on the TI Pro, IRQ6 is connected to the same pin on the expansion bus
  3471.       that IBM connects to IRQ7
  3472. SeeAlso: INT 0F"IRQ7",INT 45"TI Professional",INT 47"TI Professional"
  3473. --------O-46---------------------------------
  3474. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  3475. Return: CF clear if successful
  3476.         AL = character read
  3477.     CF set on error
  3478.         AL = error code
  3479. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  3480. --------h-47---------------------------------
  3481. INT 47 - Z100 - Master 8259 - Printer
  3482. SeeAlso: INT 46"Z100",INT 48"Z100"
  3483. --------h-47---------------------------------
  3484. INT 47 - TI Professional PC - IRQ7 - KEYBOARD USART
  3485. SeeAlso: INT 09"IRQ1",INT 46"TI Professional"
  3486. --------O-47---------------------------------
  3487. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3488.     AL = character to be written
  3489. Return: FLAGS destroyed
  3490. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  3491. --------b-47---------------------------------
  3492. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  3493. Desc:    used by the second WD1002-27X controller to cascade to the first
  3494.       controller's INT 40
  3495. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  3496. ----------478000-----------------------------
  3497. INT 47 - SQL Base - DATABASE ENGINE API
  3498.     AX = 8000h
  3499.     DS:BX -> parameter block, first word is function number (see #1862)
  3500. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3501. SeeAlso: AX=8001h
  3502.  
  3503. (Table 1862)
  3504. Values for SQL Base function number:
  3505.  01h    "SQLFINI" initalialize application's use of the database
  3506.  02h    "SQLFDON" application is done using the database
  3507.  03h    "SQLFCON" connect to a cursor/database
  3508.  04h    "SQLFDIS" disconnect from a cursor/database
  3509.  05h    "SQLFCOM" compile a SQL command
  3510.  06h    "SQLFEXE" execute a SQL command
  3511.  07h    "SQLFCEX" compile and execute a SQL command
  3512.  08h    "SQLFCMT" commit a transaction to the database
  3513.  09h    "SQLFDES" describe the items of a SELECT statement
  3514.  0Ah    "SQLFGFI" get fetch information
  3515.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  3516.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  3517.  0Dh    "SQLFEFB" enable fetch backwards
  3518.  0Eh    "SQLFPRS" position in result set
  3519.  0Fh    "SQLFURS" undo result set
  3520.  10h    "SQLFNBV" get number of bind variables
  3521.  11h    "SQLFBND" bind data variables
  3522.  12h    "SQLFBNN" bind numerics
  3523.  13h    "SQLFBLN" bind long number
  3524.  14h    "SQLFBLD" bind long data variables
  3525.  15h    "SQLFSRS" start restriction set processing
  3526.  16h    "SQLFRRS" restart restriction set processing
  3527.  17h    "SQLFCRS" close restriction set
  3528.  18h    "SQLFDRS" drop restriction set
  3529.  19h    "SQLFARF" apply Roll Forward journal
  3530.  1Ah    "SQLFERF" end Roll Forward journal
  3531.  1Bh    "SQLFSRF" start Roll Forward journal
  3532.  1Ch    "SQLFSTO" store a compiled SQL command
  3533.  1Dh    "SQLFRET" retrieve a compiled SQL command
  3534.  1Eh    "SQLFDST" drop a stored command
  3535.  1Fh    "SQLFCTY" get command type
  3536.  20h    "SQLFEPO" get error position
  3537.  21h    "SQLFGNR" get number of rows
  3538.  22h    "SQLFNSI" get number of select items
  3539.  23h    "SQLFRBF" get Roll Back flag
  3540.  24h    "SQLFRCD" get return code
  3541.  25h    "SQLFROW" get number of ROWs
  3542.  26h    "SQLFSCN" set cursor name
  3543.  27h    "SQLFSIL" set isolation level
  3544.  28h    "SQLFSLP" set log parameters
  3545.  29h    "SQLFSSB" set select buffer
  3546.  2Ah    "SQLFSSS" set sort space
  3547.  2Bh    "SQLFRLO" read long
  3548.  2Ch    "SQLFWLO" write long
  3549.  2Dh    "SQLFLSK" long seek
  3550.  2Eh    "SQLFGLS" get long size
  3551.  2Fh    "SQLFELO" end long operation
  3552.  30h    "SQLFRBK" roll back a transaction from the database
  3553.  31h    "SQLFERR" error message
  3554.  32h    "SQLFCPY" copy
  3555.  33h    "SQLFR01" reserved
  3556.  34h    "SQLFSYS" system
  3557.  35h    "SQLFSTA" statistics
  3558.  36h    "SQLFR02" reserved
  3559.  37h    "SQLFXAD" extra add
  3560.  38h    "SQLFXCN" extra character to number
  3561.  39h    "SQLFXDA" extra date add
  3562.  3Ah    "SQLFXDP" extra date picture
  3563.  3Bh    "SQLFXDV" extra divide
  3564.  3Ch    "SQLFXML" extra multiply
  3565.  3Dh    "SQLFXNP" extra number picture
  3566.  3Eh    "SQLFXPD" extra picture date
  3567.  3Fh    "SQLFXSB" extra subtract
  3568.  40h    "SQLFINS" install database
  3569.  41h    "SQLFDIN" deinstall database
  3570.  42h    "SQLFDIR" directory of databases
  3571.  43h    "SQLFTIO" timeout
  3572.  44h    "SQLFFQN" get fully qualified column name
  3573.  45h    "SQLFEXP" explain execution plan
  3574.  46h    "SQLFFER" get full error
  3575.  47h    "SQLFBKP" begin online backup
  3576.  48h    "SQLFRDC" read backup data chunk
  3577.  49h    "SQLFEBK" end backup
  3578.  4Ah    "SQLFRES" begin restore from backup
  3579.  4Bh    "SQLFWDC" write backup data chunk for restore
  3580.  4Ch    "SQLFRRD" recover restored database to consistent state
  3581.  4Dh    "SQLFERS" end restore
  3582.  4Eh    "SQLFNRR" return number of result set rows
  3583.  4Fh    "SQLFSTR" start restriction mode
  3584.  50h    "SQLFSPR" stop restriction mode
  3585.  51h    "SQLFCNC" connect 2
  3586.  52h    "SQLFCNR" connect with no recovery
  3587.  53h    "SQLFOMS" set output message size
  3588.  54h    "SQLFIMS" set input message size
  3589.  55h    "SQLFSCP" set cache pages
  3590.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  3591.  57h    "SQLFLAB" get label info for items in SELECT statement
  3592.  58h    "SQLFCBV" clear bind variables
  3593.  59h    "SQLFGET" get database information
  3594.  5Ah    "SQLFSET" set database information
  3595.  5Bh    "SQLFTEC" translate error code
  3596. ----------478001-----------------------------
  3597. INT 47 - SQL Base - GET VERSION NUMBER
  3598.     AX = 8001h
  3599. Return: ???
  3600. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3601. SeeAlso: AX=8000h
  3602. --------B-48---------------------------------
  3603. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  3604. SeeAlso: INT 49"PCjr"
  3605. --------h-48---------------------------------
  3606. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  3607. SeeAlso: INT 47"Z100",INT 49"Z100"
  3608. --------N-48---------------------------------
  3609. INT 48 - Watstar PC Network data pointer 1
  3610. SeeAlso: INT 49"Watstar"
  3611. --------b-48---------------------------------
  3612. INT 48 - TI Professional PC - SPEAKER DEVICE SERVICE ROUTINE
  3613.     no details available
  3614. SeeAlso: INT 40"TI Professional",INT 49"TI Professional"
  3615. SeeAlso: INT 4A"TI Professional",INT 4C"TI Professional",INT 4D/AH=00h
  3616. --------O-48---------------------------------
  3617. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  3618. Return: FLAGS destroyed
  3619. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  3620. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  3621. --------b-48---------------------------------
  3622. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  3623. Note:    the second WD1002-27X controller in a system uses the low byte to
  3624.       store the number of drives controlled by the second controller,
  3625.       and the high word for temporary storage during track recalculation;
  3626.       the first controller uses offsets 74h-77h in the BIOS data area
  3627.       (see MEMORY.LST) to store data
  3628. SeeAlso: INT 47"SuperBIOS"
  3629. --------V-48---------------------------------
  3630. INT 48 U - Compaq UILIB.EXE - API
  3631.     AX = function (see #1863)
  3632.     BX = call type (0002h) (see #1864)
  3633.     ???
  3634. Return: ???
  3635. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  3636.       listed below
  3637. SeeAlso: AX=1A70h
  3638.  
  3639. (Table 1863)
  3640. Values for valid UILIB function number:
  3641.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  3642.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  3643.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  3644.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  3645.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  3646.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  3647.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  3648.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  3649.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  3650.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  3651.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  3652.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  3653.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  3654.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  3655.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  3656.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  3657.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  3658.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  3659.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  3660.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  3661.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  3662.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  3663.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  3664. --------V-481A70-----------------------------
  3665. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  3666.     AX = 1A70h
  3667.     BX = call type (see #1864)
  3668. Return: CX = 5649h ('VI') if installed
  3669.     DX = 4557h ('EW') if installed
  3670.         AX = version??? (0106h)
  3671.  
  3672. (Table 1864)
  3673. Values for UILIB call type:
  3674.  0000h    near
  3675.  0001h    far
  3676.  0002h    INT (only valid call type when using INT 48)
  3677.  0003h    near
  3678. --------B-49---------------------------------
  3679. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  3680. SeeAlso: #1865,INT 48"PCjr"
  3681.  
  3682. Format of PCjr scan-code translation table:
  3683. Offset    Size    Description    (Table 1865)
  3684.  00h    BYTE    number of non-keyboard scancodes in the table
  3685.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  3686.           representing the scancode mapped values relative to their
  3687.           input values within the range of 56h through 7Eh
  3688. --------h-49---------------------------------
  3689. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  3690. SeeAlso: INT 48"Z100",INT 4A"Z100"
  3691. --------V-49---------------------------------
  3692. INT 49 - TI Professional PC - CRT DEVICE SERVICE ROUTINE
  3693.     apparently provides direct video display on the TI Professional PC
  3694. SeeAlso: INT 40"TI Professional",INT 48"TI Professional"
  3695. SeeAlso: INT 4A"TI Professional",INT 4B"TI Professional",INT 4D/AH=00h
  3696. SeeAlso: INT 57"TI Professional"
  3697. --------N-49---------------------------------
  3698. INT 49 - Watstar PC Network data pointer 2
  3699. SeeAlso: INT 48"Watstar"
  3700. --------O-49---------------------------------
  3701. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3702.     AL = character to be written
  3703. Return: FLAGS destroyed
  3704. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  3705. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  3706. --------a-490001-----------------------------
  3707. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  3708.     AX = 0001h
  3709. Return: AX = status (see #1866)
  3710.     BX,CX,DX destroyed
  3711. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  3712.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  3713. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  3714.       actual interrupt in use may be found by searching for the signature
  3715.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  3716.       the interrupt handler (this is also the installation check).    MAGic
  3717.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  3718.       the interrupt handler's segment, followed by MAGic's TSR ID of
  3719.       "VMAG".
  3720. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  3721. Index:    installation check;MAGic
  3722.  
  3723. (Table 1866)
  3724. Values for MAGic status:
  3725.  0000h    cannot magnify current video mode
  3726.  0002h    magnified (text mode)
  3727.  0003h    magnified (graphics mode)
  3728.  FFFDh    function works only in magnified mode
  3729.  FFFFh    MAGic busy, retry later
  3730. --------a-490002-----------------------------
  3731. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  3732.     AX = 0002h
  3733. Return: AX = status (see #1866)
  3734.     BX,CX,DX destroyed
  3735. SeeAlso: AX=0001h
  3736. --------a-490003-----------------------------
  3737. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  3738.     AX = 0003h
  3739.     BX = vertical position (character row [text] or pixel row [graphics])
  3740.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  3741. Return: AX = status
  3742.         0000h successful
  3743.         FFFFh MAGic busy, retry later
  3744.     BX,CX,DX destroyed
  3745. Note:    window is not moved if the position is inside the current window
  3746. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  3747. --------a-490004-----------------------------
  3748. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  3749.     AX = 0004h
  3750.     BX = vertical position of upper left corner
  3751.     DX = horizontal position
  3752. Return: AX = status (see AX=0003h)
  3753.     BX,CX,DX destroyed
  3754. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  3755. --------a-490005-----------------------------
  3756. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  3757.     AX = 0005h
  3758. Return: AX = status
  3759.         0000h successful
  3760.         BX = vertical position (char row or pixel row)
  3761.         DX = horizontal position (char column or 8-pixel units)
  3762.         FFFFh MAGic busy, retry later
  3763.         BX,DX destroyed
  3764.     CX destroyed
  3765. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  3766. --------a-490006-----------------------------
  3767. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  3768.     AX = 0006h
  3769. Return: AX = status
  3770.         0000h successful
  3771.         BX = vertical size (char rows or pixel rows)
  3772.         DX = horizontal size (char cols or 8-pixel units)
  3773.         FFFFh MAGic busy, retry later
  3774.         BX,DX destroyed
  3775.     CX destroyed
  3776. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  3777. --------a-490007-----------------------------
  3778. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  3779.     AX = 0007h
  3780. Return: AX = status
  3781.         0000h successful
  3782.         BX = vertical size (char rows or pixel rows)
  3783.         DX = horizontal size (char cols or 8-pixel units)
  3784.         FFFEh invalid function
  3785.         FFFFh MAGic busy, retry later
  3786.         BX,DX destroyed
  3787.     CX destroyed
  3788. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  3789.       AX=0000h is accepted and will branch into hyperspace
  3790. SeeAlso: AX=0001h,AX=0006h
  3791. --------a-490008-----------------------------
  3792. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  3793.     AX = 0008h
  3794.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  3795. Return: AX = status
  3796.         0000h successful
  3797.         FFFBh scaling factor only available in MAGic Deluxe
  3798.         FFFCh already in magnified state, can't set size
  3799. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  3800.       magnify the display
  3801.     scaling factors greater than 2 are only available in MAGic Deluxe
  3802. SeeAlso: AX=0001h
  3803. --------B-4A---------------------------------
  3804. INT 4A C - SYSTEM - USER ALARM HANDLER
  3805. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  3806.       occurs; an application may use it to perform an action at a
  3807.       predetermined time.
  3808. Note:    this interrupt is called from within a hardware interrupt handler,
  3809.       so all usual precautions against reentering DOS must be taken
  3810. SeeAlso: INT 1A/AH=06h
  3811. --------h-4A---------------------------------
  3812. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  3813. SeeAlso: INT 49"Z100",INT 4B"Z100"
  3814. --------b-4A---------------------------------
  3815. INT 4A - TI Professional PC - KEYBOARD DEVICE SERVICE ROUTINE
  3816.     no details available
  3817. SeeAlso: INT 47"TI Professional",INT 48"TI Professional"
  3818. SeeAlso: INT 49"TI Professional",INT 4C"TI Professional",INT 4D/AH=00h
  3819. SeeAlso: INT 5B"TI Professional"
  3820. --------O-4A---------------------------------
  3821. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  3822.     AL = function code
  3823.         FAh transfer data between 80186 and 65C12 I/O processor
  3824.     DS:BX -> control block (see #1867)
  3825. Return: FLAGS destroyed
  3826.     control block updated
  3827. Note:    there are more functions than are listed here, but details are not
  3828.       available
  3829. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  3830.  
  3831. Format of BBC Master control block for function FAh:
  3832. Offset    Size    Description    (Table 1867)
  3833.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  3834.  01h    BYTE    number of parameters read from I/O processor (01h)
  3835.  02h    DWORD    I/O processor address
  3836.  06h    DWORD    80186 segment:offset address
  3837.  0Ah    WORD    number of bytes to transfer
  3838.  0Ch    BYTE    operation type
  3839.         00h write to 65C12 at 24 us/byte
  3840.         01h read from 65C12 at 24 us/byte
  3841.         02h write to 65C12 at 26 us/word
  3842.         03h read from 65C12 at 26 us/word
  3843.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  3844.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  3845.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  3846.         (see #1868)
  3847.  
  3848. Bitfields for 65C12 memory access control:
  3849. Bit(s)    Description    (Table 1868)
  3850.  7    unused
  3851.  6    always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
  3852.  5    use shadow screen memory if screen address specified
  3853.  4    use current ROM rather than ROM selected by bits 3-0 (only if I/O
  3854.       address between 8000h and BFFFh)
  3855.  3-0    paged ROM number
  3856. --------h-4B---------------------------------
  3857. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  3858. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  3859. --------b-4B---------------------------------
  3860. INT 4B - TI Professional PC - PARALLEL PORT DEVICE SERVICE ROUTINE
  3861.     no details available
  3862. SeeAlso: INT 40"TI Professional",INT 48"TI Professional"
  3863. SeeAlso: INT 49"TI Professional",INT 4C"TI Professional",INT 4D/AH=00h
  3864. --------d-4B---------------------------------
  3865. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  3866.     ES:DI -> CAM Control Block (see #1880 at INT 4F/AX=8100h)
  3867. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  3868.       to avoid conflicting with the IBM SCSI interface and the Virtual
  3869.       DMA specification
  3870.     the installation check for the driver is the string "SCSI_CAM" eight
  3871.       bytes past the INT 4Bh handler
  3872.     the only driver to date reported to use the CAM interface on INT 4B
  3873.       instead of INT 4F is from Future Domain (which has drivers for CAM
  3874.       on either interrupt)
  3875. SeeAlso: INT 4F/AX=8100h
  3876. Index:    installation check;Common Access Method SCSI interface
  3877. --------O-4B---------------------------------
  3878. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  3879.     AL = function code
  3880.     BL = first parameter
  3881.     BH = second parameter (if needed)
  3882. Return: BL = first return parameter
  3883.     BH = second return parameter
  3884.     CF depends on function
  3885. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  3886. --------d-4B80-------------------------------
  3887. INT 4B - IBM SCSI interface
  3888.     AH = 80h
  3889.     AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
  3890.     further details not yet available
  3891. --------d-4B8102DX0000-----------------------
  3892. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  3893.     AX = 8102h
  3894.     DX = 0000h
  3895. Return: CF clear if successful
  3896.         AH = major version number
  3897.         AL = minor version number
  3898.         BX = product number (see #1869)
  3899.         CX = product revision number
  3900.         always 0000h for QMAPS and HPMM.SYS
  3901.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  3902.         DX = flags (see #1871)
  3903.         SI:DI = maximum DMA buffer size
  3904.     CF set on error
  3905.         AL = error code (see #1870)
  3906. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  3907.       apparently not always the case
  3908. SeeAlso: INT 2C/AX=002Bh,INT 31
  3909. Index:    installation check;Virtual DMA Spec
  3910.  
  3911. (Table 1869)
  3912. Values for VDS product number:
  3913.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  3914.  0001h    for Microsoft's EMM386.EXE
  3915.  0003h    for Windows 3.x WIN386.EXE
  3916.  0300h    OS/2 (all versions to date)
  3917.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  3918.  4560h    ("E`") for Qualitas' 386MAX
  3919.  4D43h    ("MC") for V Communications' Memory Commander
  3920.  5145h    ("QE") for Quarterdeck's QEMM-386
  3921.  524Dh    ("RM") for Helix's Netroom RM386
  3922.  
  3923. (Table 1870)
  3924. Values for VDS error code:
  3925.  01h    region not in contiguous memory
  3926.  02h    region crossed a physical alignment boundary
  3927.  03h    unable to lock pages
  3928.  04h    no buffer available
  3929.  05h    region too large for buffer
  3930.  06h    buffer currently in use
  3931.  07h    invalid memory region
  3932.  08h    region was not locked
  3933.  09h    number of physical pages greater than table length
  3934.  0Ah    invalid buffer ID
  3935.  0Bh    copy out of buffer range
  3936.  0Ch    invalid DMA channel number
  3937.  0Dh    disable count overflow
  3938.  0Eh    disable count underflow
  3939.  0Fh    function not supported
  3940.  10h    reserved flag bits set in DX
  3941.  
  3942. Bitfields for VDS flags:
  3943. Bit(s)    Description    (Table 1871)
  3944.  0    PC/XT bus (DMA in first megabyte only)
  3945.  1    physical buffer/remap region in first megabyte
  3946.  2    automatic remap enabled
  3947.  3    all memory is physically contiguous
  3948.  4-15    reserved (zero)
  3949. --------d-4B8103-----------------------------
  3950. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  3951.     AX = 8103h
  3952.     DX = flags (see #1872)
  3953.     ES:DI -> DMA descriptor structure (see #1873,#1874,#1875)
  3954. Return: CF clear if successful
  3955.         DDS physical address field filled in
  3956.         DDS buffer ID field filled (0000h if no buffer allocated)
  3957.     CF set on error
  3958.         AL = error code (see #1870)
  3959.         DDS region size field filled wth maximum contiguous length in bytes
  3960. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  3961.       in enhanced mode
  3962.     Windows 3.0 in enhanced mode does not return a correct code on error
  3963. SeeAlso: AX=8104h,AX=8105h
  3964.  
  3965. Bitfields for VDS flags:
  3966. Bit(s)    Description    (Table 1872)
  3967.  0    reserved (zero)
  3968.  1    data should be copied into buffer (ignored if 2 set)
  3969.  2    buffer should not be allocated if region noncontiguous or crosses
  3970.       physical alignment boundary specified by 4-5
  3971.  3    don't attempt automatic remap
  3972.  4    region must not cross 64K physical alignment boundary
  3973.  5    region must not cross 128K physical alignment boundary
  3974.  6-15    reserved (zero)
  3975.  
  3976. Format of DMA descriptor structure (DDS):
  3977. Offset    Size    Description    (Table 1873)
  3978.  00h    DWORD    region size
  3979.  04h    DWORD    offset
  3980.  08h    WORD    segment/selector
  3981.  0Ah    WORD    buffer ID
  3982.  0Ch    DWORD    physical address
  3983.  
  3984. Format of Extended DMA descriptor structure (EDDS):
  3985. Offset    Size    Description    (Table 1874)
  3986.  00h    DWORD    region size
  3987.  04h    DWORD    offset
  3988.  08h    WORD    segment/selector
  3989.  0Ah    WORD    reserved
  3990.  0Ch    WORD    number available
  3991.  0Eh    WORD    number used
  3992.  10h    DWORD    region 0 physical address
  3993.  14h    DWORD    region 0 size in bytes
  3994.  18h    DWORD    region 1 physical address
  3995.  1Ch    DWORD    region 1 size in bytes
  3996.     ...
  3997.  
  3998. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  3999. Offset    Size    Description    (Table 1875)
  4000.  00h    DWORD    region size
  4001.  04h    DWORD    offset
  4002.  08h    WORD    segment/selector
  4003.  0Ah    WORD    reserved
  4004.  0Ch    WORD    number available
  4005.  0Eh    WORD    number used
  4006.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  4007.  14h    DWORD    page table entry 1
  4008.     ...
  4009. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  4010.       is present and locked
  4011. --------d-4B8104-----------------------------
  4012. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  4013.     AX = 8104h
  4014.     DX = flags
  4015.         bit 0: reserved (zero)
  4016.         bit 1: data should be copied out of buffer
  4017.         bits 2-15 reserved (zero)
  4018.     ES:DI -> DMA descriptor structure (see #1873,#1874) with region size,
  4019.           physical address, and buffer ID fields set
  4020. Return: CF clear if successful
  4021.         DDS physical address field set
  4022.         DDS buffer ID field set (0000h if no buffer allocated)
  4023.     CF set on error
  4024.         AL = error code (see #1870)
  4025.         DDS region size field filled wth maximum contiguous length in bytes
  4026. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  4027.       a segment
  4028. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  4029. SeeAlso: AX=8103h,AX=8106h
  4030. --------d-4B8105-----------------------------
  4031. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  4032.     AX = 8105h
  4033.     DX = flags (see #1876)
  4034.     ES:DI -> Extended DMA descriptor structure (see #1874,#1875)
  4035.           region size, linear segment, linear offset, and number avail
  4036.           fields set
  4037. Return: CF clear if successful
  4038.         EDDS number used field set
  4039.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  4040.     CF set on error
  4041.         AL = error code (see #1870)
  4042.         EDDS region size field filled with max length in bytes that can be
  4043.           locked and described in the EDDS table
  4044. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  4045.       page address for pages which were originally not present
  4046. SeeAlso: AX=8103h,AX=8106h
  4047.  
  4048. Bitfields for VDS flags:
  4049. Bit(s)    Description    (Table 1876)
  4050.  0-5    reserved (zero)
  4051.  6    EDDS should be returned with page table entries
  4052.  7    only present pages should be locked (not-present pages receive entry
  4053.       of 0000h)
  4054.  8-15    reserved (zero)
  4055. --------d-4B8106-----------------------------
  4056. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  4057.     AX = 8106h
  4058.     DX = flags (see #1877)
  4059.     ES:DI -> Extended DMA descriptor structure (see #1874,#1875) returned
  4060.           by AX=8105h
  4061. Return: CF clear if successful
  4062.     CF set on error
  4063.         AL = error code (see #1870)
  4064. Note:    according to the Microsoft version of the VDS specification, the
  4065.       actual scatter/gather list is ignored, while according to the IBM
  4066.       version of the specification, "the result of a LOCK operation"
  4067.       must be provided to this function
  4068. SeeAlso: AX=8104h,AX=8105h
  4069.  
  4070. Bitfields for VDS flags:
  4071. Bit(s)    Description    (Table 1877)
  4072.  0-5    reserved (zero)
  4073.  6    EDDS contains page table entries
  4074.  7    EDDS may contain not-present pages (entry = 0000h)
  4075.  8-15    reserved (zero)
  4076. --------d-4B8107-----------------------------
  4077. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  4078.     AX = 8107h
  4079.     DX = flags
  4080.         bit 0: reserved (zero)
  4081.         bit 1: data should be copied into buffer
  4082.         bits  2-15 reserved (zero)
  4083.     ES:DI -> DMA descriptor structure (see #1873) with region size set
  4084.           (also region offset and region segment if DX bit 1 set)
  4085. Return: CF clear if successful
  4086.         DDS physical address and buffer ID set
  4087.         DDS region size filled with length of buffer
  4088.     CF set on error
  4089.         AL = error code (see #1870)
  4090. SeeAlso: AX=8108h
  4091. --------d-4B8108-----------------------------
  4092. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  4093.     AX = 8108h
  4094.     DX = flags
  4095.         bit 0: reserved (zero)
  4096.         bit 1: data should be copied out of buffer
  4097.         bits 2-15 reserved (zero)
  4098.     ES:DI -> DMA descriptor structure (see #1873,#1874) with buffer ID set
  4099.           (also region size/region offset/segment if DX bit 1 set)
  4100. Return: CF clear if successful
  4101.     CF set on error
  4102.         AL = error code (see #1870)
  4103. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  4104.       for this function to work correctly
  4105. SeeAlso: AX=8107h
  4106. --------d-4B8109DX0000-----------------------
  4107. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  4108.     AX = 8109h
  4109.     DX = 0000h
  4110.     ES:DI -> DMA descriptor structure (see #1873,#1874) with buffer ID,
  4111.           region segment/offset, and region size fields set
  4112.     BX:CX = starting offset into DMA buffer
  4113. Return: CF clear if successful
  4114.     CF set on error
  4115.         AL = error code (see #1870)
  4116. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  4117. SeeAlso: AX=810Ah
  4118. --------d-4B810ADX0000-----------------------
  4119. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  4120.     AX = 810Ah
  4121.     DX = 0000h
  4122.     ES:DI -> DMA descriptor structure (see #1873,#1875) with buffer ID,
  4123.           region segment/offset, and region size fields set
  4124.     BX:CX = starting offset into DMA buffer
  4125. Return: CF clear if successful
  4126.     CF set on error
  4127.         AL = error code (see #1870)
  4128. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  4129. SeeAlso: AX=8109h
  4130. --------d-4B810B-----------------------------
  4131. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  4132.     AX = 810Bh
  4133.     BX = DMA channel number
  4134.     DX = 0000h
  4135. Return: CF clear if successful
  4136.     CF set on error
  4137.         AL = error code (see #1870)
  4138. SeeAlso: AX=810Ch
  4139. --------d-4B810C-----------------------------
  4140. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  4141.     AX = 810Ch
  4142.     BX = DMA channel number
  4143.     DX = 0000h
  4144. Return: CF clear if successful
  4145.         ZF set if disable count decremented to zero
  4146.     CF set on error
  4147.         AL = error code (see #1870)
  4148. SeeAlso: AX=810Bh
  4149. --------Q-4B810D-----------------------------
  4150. INT 4B - QEMM-386 - BUG
  4151.     AX = 810Dh
  4152. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  4153.       call
  4154. --------h-4C---------------------------------
  4155. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  4156. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  4157. --------b-4C---------------------------------
  4158. INT 4C - TI Professional PC - CLOCK/ANALOG INTERFACE
  4159.     no details available
  4160. SeeAlso: INT 40"TI Professional",INT 49"TI Professional"
  4161. SeeAlso: INT 4A"TI Professional",INT 4B"TI Professional",INT 4D/AH=00h
  4162. SeeAlso: INT 58"TI Professional"
  4163. --------O-4C---------------------------------
  4164. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  4165.     DS:BX -> CR-terminated command string
  4166. Return: FLAGS destroyed
  4167. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  4168. --------h-4D---------------------------------
  4169. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  4170. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  4171. --------B-4D00-------------------------------
  4172. INT 4D - TI Professional PC - DISK - RESET DISK SYSTEM
  4173.     AH = 00h
  4174.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  4175. Return: AH = status (see #0140 at INT 13/AH=01h)
  4176.     CF clear if successful (returned AH=00h)
  4177.     CF set on error
  4178. Note:    this function is the same as INT 13/AH=00h on a standard PC BIOS
  4179. SeeAlso: AH=01h,AH=02h,AH=08h,AH=0Bh,INT 13/AH=00h,INT 46"TI Professional"
  4180. SeeAlso: INT 48"TI Professional",INT 4A"TI Professional"
  4181. --------B-4D01-------------------------------
  4182. INT 4D - TI Professional PC - DISK - GET STATUS OF LAST OPERATION
  4183.     AH = 01h
  4184.     DL = drive (bit 7 set for hard disk)
  4185. Return: CF clear if status unchanged
  4186.     CF set if status changed since last call
  4187.     AH = 00h
  4188.     AL = status of previous operation (see #0140 at INT 13/AH=01h)
  4189. Notes:    this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
  4190.     the TI's BIOS tranparently performs a number of retries, and an error
  4191.       status is only reported if all of the retries fail.  To get the error
  4192.       status if the operation succeeded on a retry, use AH=07h instead
  4193. SeeAlso: AH=00h,AH=07h,INT 13/AH=01h
  4194. --------B-4D02-------------------------------
  4195. INT 4D - TI Professional PC - DISK - READ SECTOR(S) INTO MEMORY
  4196.     AH = 02h
  4197.     AL = number of sectors to read (must be nonzero)
  4198.     CH = low eight bits of cylinder number
  4199.     CL = sector number 1-63 (bits 0-5)
  4200.          high two bits of cylinder (bits 6-7, hard disk only)
  4201.     DH = head number
  4202.     DL = drive number (bit 7 set for hard disk)
  4203.     ES:BX -> data buffer
  4204. Return: CF set on error
  4205.         if AH = 11h (corrected ECC error), AL = burst length
  4206.     CF clear if successful
  4207.     AH = status (see #0140 at INT 13/AH=01h)
  4208.     AL = number of sectors transferred
  4209.     ES:BX -> buffer for last sector processed (including one with errors)
  4210. SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,INT 13/AH=02h
  4211. --------B-4D03-------------------------------
  4212. INT 4D - TI Professional PC - DISK - WRITE SECTOR(S) FROM MEMORY
  4213.     AH = 03h
  4214.     AL = number of sectors to write (must be nonzero)
  4215.     CH = low eight bits of cylinder number
  4216.     CL = sector number 1-63 (bits 0-5)
  4217.          high two bits of cylinder (bits 6-7, hard disk only)
  4218.     DH = head number
  4219.     DL = drive number (bit 7 set for hard disk)
  4220.     ES:BX -> buffer containing data
  4221. Return: CF set on error
  4222.         if AH = 11h (corrected ECC error), AL = burst length
  4223.     CF clear if successful
  4224.     AH = status (see #0140 at INT 13/AH=01h)
  4225.     AL = number of sectors transferred
  4226.     ES:BX -> buffer for last sector processed (including one with errors)
  4227. SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=03h
  4228. --------B-4D04-------------------------------
  4229. INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR CRC(S)
  4230.     AH = 04h
  4231.     AL = number of sectors to verify (must be nonzero)
  4232.     CH = low eight bits of cylinder number
  4233.     CL = sector number 1-63 (bits 0-5)
  4234.          high two bits of cylinder (bits 6-7, hard disk only)
  4235.     DH = head number
  4236.     DL = drive number (bit 7 set for hard disk)
  4237.     ES:BX -> data buffer
  4238. Return: CF set on error
  4239.         if AH = 11h (corrected ECC error), AL = burst length
  4240.     CF clear if successful
  4241.     AH = status (see #0140 at INT 13/AH=01h)
  4242.     AL = number of sectors transferred
  4243.     ES:BX -> buffer for last sector processed (including one with errors)
  4244. Note:    even though no data is transferred, ES:BX must still be valid
  4245. SeeAlso: AH=00h,AH=01h,AH=02h,AH=06h,INT 13/AH=04h
  4246. --------B-4D06-------------------------------
  4247. INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR(S)
  4248.     AH = 06h
  4249.     AL = number of sectors to verify (must be nonzero)
  4250.     CH = low eight bits of cylinder number
  4251.     CL = sector number 1-63 (bits 0-5)
  4252.          high two bits of cylinder (bits 6-7, hard disk only)
  4253.     DH = head number
  4254.     DL = drive number (bit 7 set for hard disk)
  4255.     ES:BX -> data buffer
  4256. Return: CF set on error
  4257.         if AH = 11h (corrected ECC error), AL = burst length
  4258.     CF clear if successful
  4259.     AH = status (see #0140 at INT 13/AH=01h)
  4260.     AL = number of sectors transferred
  4261.     ES:BX -> buffer for last sector processed (including one with errors)
  4262. Note:    even though no data is transferred, ES:BX must still be valid because
  4263.       an actual comparison with disk data is performed, not just the CRC
  4264.       check of the standard PC BIOS or INT 4D/AH=04h
  4265. SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=04h
  4266. --------B-4D07-------------------------------
  4267. INT 4D - TI Professional PC - DISK - GET RETRY STATUS OF LAST OPERATION
  4268.     AH = 07h
  4269.     DL = drive (bit 7 set for hard disk)
  4270. Return: CF clear if status unchanged
  4271.     CF set if status changed since last call
  4272.     AH = 00h
  4273.     AL = status of previous operation (see #0140 at INT 13/AH=01h)
  4274. Notes:    this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
  4275.     the TI's BIOS tranparently performs a number of retries; this function
  4276.       returns the error status of a failed operation even if the operation
  4277.       succeeded on a retry
  4278. SeeAlso: AH=00h,AH=01h,INT 13/AH=01h
  4279. --------B-4D08-------------------------------
  4280. INT 4D - TI Professional PC - DISK - SET STANDARD DEVICE INTERFACE TABLE
  4281.     AH = 08h
  4282.     DL = drive number (00h-03h)
  4283.     AL = drive type
  4284.         00h single-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
  4285.         01h double-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
  4286.         02h single-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
  4287.         03h double-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
  4288. Return: nothing???
  4289. SeeAlso: AH=00h,AH=09h
  4290. --------B-4D09-------------------------------
  4291. INT 4D - TI Professional PC - DISK - SET DEVICE INTERFACE TABLE ADDRESS
  4292.     AH = 09h
  4293.     DL = drive number (00h-07h)
  4294.     ES:BX -> Device Interface Table (see #1878)
  4295. Return: nothing???
  4296. SeeAlso: AH=00h,AH=08h,AH=0Ah,INT 1E
  4297.  
  4298. Format of TI Professional PC Device Interface Table:
  4299. Offset    Size    Description    (Table 1878)
  4300.  00h    DWORD    -> entry point for disk routine
  4301.  04h    WORD    bytes per sector
  4302.  06h    BYTE    sectors per track
  4303.  07h    BYTE    number of heads
  4304.  08h    BYTE    number of cylinders
  4305.  09h    BYTE    retry count
  4306.  0Ah    BYTE    precompensation start
  4307. SeeAlso: #0572 at INT 1E
  4308. --------B-4D0A-------------------------------
  4309. INT 4D - TI Professional PC - DISK - GET DEVICE INTERFACE TABLE ADDRESS
  4310.     AH = 0Ah
  4311.     DL = drive number (00h-07h)
  4312. Return:    AH = status
  4313.     ES:BX -> Device Interface Table (see #1878)
  4314. SeeAlso: AH=00h,AH=08h,AH=09h,INT 1E
  4315. --------B-4D0B-------------------------------
  4316. INT 4D - TI Professional PC - DISK - TURN OFF ALL DRIVES
  4317.     AH = 0Bh
  4318. Return: AH = 00h
  4319. Note:    used for diagnostics or to conserve power
  4320. SeeAlso: AH=00h
  4321. --------h-4E---------------------------------
  4322. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  4323. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  4324. --------b-4E---------------------------------
  4325. INT 4E - TI Professional PC - TIME-OF-DAY CLOCK DEVICE SERVICE ROUTINE
  4326.     no details available
  4327. SeeAlso: INT 40"TI Professional",INT 48"TI Professional"
  4328. SeeAlso: INT 4A"TI Professional",INT 4F"TI Professional"
  4329. --------h-4F---------------------------------
  4330. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  4331. SeeAlso: INT 4E"Z100"
  4332. --------b-4F---------------------------------
  4333. INT 4F - TI Professional PC - SYSTEM CONFIGURATION CALL
  4334.     no details available
  4335. SeeAlso: INT 40"TI Professional",INT 49"TI Professional"
  4336. SeeAlso: INT 4B"TI Professional",INT 4D/AH=00h,INT 4E"TI Professional"
  4337. --------d-4F8100-----------------------------
  4338. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  4339.     AX = 8100h
  4340.     ES:BX -> CAM Control Block (CCB) (see #1880)
  4341. Return: AH = status
  4342.         00h successful
  4343.         01h invalid CCB address (0000h:0000h)
  4344. Note:    the SCSI Interface Module (SIM) may complete the requested function
  4345.       and invoke the completion callback function before this call returns
  4346. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  4347.  
  4348. (Table 1879)
  4349. Values for CAM function code:
  4350.  00h    NOP
  4351.  01h    execute SCSI I/O
  4352.  02h    get device type
  4353.  03h    path inquiry
  4354.  04h    release SIM queue
  4355.  05h    set async callback
  4356.  06h    set device type
  4357.  07h-0Fh reserved
  4358.  10h    abort SCSI command
  4359.  11h    reset SCSI bus
  4360.  12h    reset SCSI device
  4361.  13h    terminate I/O process
  4362.  14h-1Fh reserved
  4363.  20h    engine inquiry
  4364.  21h    execute engine request
  4365.  22h-2Fh reserved
  4366.  30h    enable logical unit number
  4367.  31h    execute target I/O
  4368.  32h-7Fh reserved
  4369.  80h-FFh vendor-specific functions
  4370.  
  4371. Format of CAM Control Block:
  4372. Offset    Size    Description    (Table 1880)
  4373.  00h    DWORD    physical address of this CCB
  4374.  04h    WORD    CAM control block length
  4375.  06h    BYTE    function code (see #1879)
  4376.  07h    BYTE    CAM status (see #1883)
  4377.  08h    BYTE    SCSI status
  4378.  09h    BYTE    path ID (FFh = XPT)
  4379.  0Ah    BYTE    target ID
  4380.  0Bh    BYTE    logical unit number
  4381.  0Ch    WORD    CAM flags (see #1881)
  4382.  0Eh    BYTE    CAM address flags (see #1882)
  4383.  0Fh    BYTE    target-mode flags (see #1884)
  4384. ---function 02h---
  4385.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  4386.  14h    BYTE    peripheral device type of target logical unit number
  4387. ---function 03h---
  4388.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  4389.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  4390.  11h    BYTE    SCSI capabilities (see #1885)
  4391.  12h    BYTE    target mode support
  4392.         bit 7: processor mode
  4393.         bit 6: phase-cognizant mode
  4394.         bit 5-0: reserved
  4395.  13h    BYTE    miscellaneous flags
  4396.         bit 7: scanned high to low instead of low to high
  4397.         bit 6: removables not included in scan
  4398.         bit 5: inquiry data not kept by XPT
  4399.         bits 4-0: reserved
  4400.  14h    WORD    engine count
  4401.  16h 14 BYTEs    vendor-specific data
  4402.  24h    DWORD    size of private data area
  4403.  28h    DWORD    asynchronous event capabilities (see #1886)
  4404.  2Ch    BYTE    highest path ID assigned
  4405.  2Dh    BYTE    SCSI device ID of initiator
  4406.  2Eh  2 BYTEs    reserved
  4407.  30h 16 BYTEs    SIM vendor ID
  4408.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  4409.  50h  4 BYTEs    operating-system dependant usage
  4410. ---functions 00h,04h,11h,12h---
  4411.  no additional fields
  4412. ---function 05h---
  4413.  10h    DWORD    asynchronous event enables (see function 03h above)
  4414.  14h    DWORD    pointer to asynchronous callback routine (see #1888)
  4415.  18h    DWORD    pointer to peripheral driver buffer
  4416.  1Ch    BYTE    size of peripheral buffer
  4417. ---function 06h---
  4418.  10h    BYTE    peripheral device type of target
  4419. ---functions 10h,13h---
  4420.  10h    DWORD    pointer to CCB to be aborted
  4421. ---function 20h---
  4422.  10h    WORD    engine number
  4423.  12h    BYTE    engine type
  4424.         00h buffer memory
  4425.         01h lossless compression
  4426.         02h lossy compression
  4427.         03h encryption
  4428.  13h    BYTE    engine algorithm ID
  4429.         00h vendor-unique
  4430.         01h LZ1 variation 1 (STAC)
  4431.         02h LZ2 variation 1 (HP DCZL)
  4432.         03h LZ2 variation 2 (Infochip)
  4433.  14h    DWORD    engine memory size
  4434. ---function 21h---
  4435.  10h    DWORD    pointer to peripheral driver
  4436.  14h  4 BYTEs    reserved
  4437.  18h    DWORD    OS-dependent request-mapping info
  4438.  1Ch    DWORD    address of completion callback routine
  4439.  20h    DWORD    pointer to scatter/gather list or data buffer
  4440.  24h    DWORD    length of data transfer
  4441.  28h    DWORD    pointer to engine buffer data
  4442.  2Ch  2 BYTEs    reserved
  4443.  2Eh    WORD    number of scatter/gather entries
  4444.  30h    DWORD    maximum destination data length
  4445.  34h    DWORD    length of destination data
  4446.  38h    DWORD    source residual length
  4447.  3Ch 12 BYTEs    reserved
  4448.  48h    DWORD    OS-dependent timeout value
  4449.  4Ch  4 BYTEs    reserved
  4450.  50h    WORD    engine number
  4451.  52h    WORD    vendor-unique flags
  4452.  54h  4 BYTEs    reserved
  4453.  58h  N BYTEs    private data area for SIM
  4454. ---function 30h---
  4455.  10h    WORD    group 6 vendor-unique CDB length
  4456.  12h    WORD    group 7 vendor-unique CDB length
  4457.  14h    DWORD    pointer to target CCB list
  4458.  18h    WORD    number of target CCBs
  4459. ---other functions---
  4460.  10h    DWORD    pointer to peripheral driver
  4461.  14h    DWORD    pointer to next CCB
  4462.  18h    DWORD    OS-dependent request mapping information
  4463.  1Ch    DWORD    address of completion callback routine (see #1887)
  4464.  20h    DWORD    pointer to scatter/gather list or data buffer
  4465.  24h    DWORD    length of data transfer
  4466.  28h    DWORD    pointer to sense info buffer
  4467.  2Ch    BYTE    length of sense info buffer
  4468.  2Dh    BYTE    CDB length
  4469.  2Eh    WORD    number of scatter/gather entries
  4470.  30h  4 BYTEs    reserved
  4471.  34h    BYTE    SCSI status
  4472.  35h  3 BYTEs    reserved
  4473.  38h    DWORD    residual length
  4474.  40h 12 BYTEs    Command Descriptor Block (CDB)
  4475.  44h    DWORD    OS-dependent timeout value
  4476.  48h    DWORD    pointer to message buffer
  4477.  4Ch    WORD    length of message buffer
  4478.  4Eh    WORD    vendor-unique flags
  4479.  50h    BYTE    tag queue action
  4480.  51h  3 BYTEs    reserved
  4481.  54h  N BYTEs    private data area for SIM
  4482.  
  4483. Bitfields for CAM flags:
  4484. Bit(s)    Description    (Table 1881)
  4485.  0    CDB is a pointer
  4486.  1    tagged queue action enable
  4487.  2    linked CDB
  4488.  3    disable callback on completion
  4489.  4    scatter/gather
  4490.  5    disable autosense
  4491.  7-6    direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  4492.  9-8    reserved
  4493.  10    engine synchronize
  4494.  11    SIM queue freeze
  4495.  12    SIM queue priority
  4496.     1 head insertion
  4497.     0 tail insertion (normal)
  4498.  13    disable synchronous transfers    / exclusive
  4499.  14    initiate synchronous transfers    \ mutually
  4500.  15    disable disconnect
  4501.  
  4502. Bitfields for CAM address flags:
  4503. Bit(s)    Description    (Table 1882)
  4504.  7    SG list/data (0 = host, 1 = engine)
  4505.  6    CDB pointer    (6-1: 0=virtual addr, 1=phys addr)
  4506.  5    SG list/data
  4507.  4    sense buffer
  4508.  3    message buffer
  4509.  2    next CCB
  4510.  1    callback on completion
  4511.  0    reserved
  4512.  
  4513. (Table 1883)
  4514. Values for CAM status:
  4515.  00h    request in progress
  4516.  01h    request successful
  4517.  02h    host aborted request
  4518.  03h    unable to abort request
  4519.  04h    request completed with error
  4520.  05h    CAM is busy
  4521.  06h    invalid request
  4522.  07h    invalid path ID
  4523.  08h    no such SCSI device
  4524.  09h    unable to terminate I/O process
  4525.  0Ah    timeout on target selection
  4526.  0Bh    timeout on command
  4527.  0Dh    receive message rejection
  4528.  0Eh    sent/received SCSI bus reset
  4529.  0Fh    detected uncorrectable parity error
  4530.  10h    Autosense request failed
  4531.  11h    no HBA detected
  4532.  12h    data over/underrun
  4533.  13h    bus freed unexpectedly
  4534.  14h    target bus phase sequence failure
  4535.  15h    CCB too small
  4536.  16h    requested capability not available
  4537.  17h    sent bus device reset
  4538.  18h    terminate I/O process
  4539.  38h    invalid LUN
  4540.  39h    invalid target ID
  4541.  3Ah    unimplemented function
  4542.  3Bh    nexus not established
  4543.  3Ch    invalid initiator ID
  4544.  3Dh    received SCSI Command Descriptor Block
  4545.  3Eh    LUN already enabled
  4546.  3Fh    SCSI bus busy
  4547. Note:    bit 6 set to indicate frozen SIM queue
  4548.     bit 7 set to indicate valid autosense
  4549.  
  4550. Bitfields for CAM target-mode flags:
  4551. Bit(s)    Description    (Table 1884)
  4552.  7    data buffer valid
  4553.  6    status valid
  4554.  5    message buffer valid
  4555.  4    reserved
  4556.  3    phase-cognizant mode
  4557.  2    target CCB available
  4558.  1    disable autodisconnect
  4559.  0    disable autosave/restore
  4560.  
  4561. Bitfields for SCSI capabilities:
  4562. Bit(s)    Description    (Table 1885)
  4563.  7    modify data pointers
  4564.  6    wide bus (32 bits)
  4565.  5    wide bus (16 bits)
  4566.  4    synchronous transfers
  4567.  3    linked commands
  4568.  2    reserved
  4569.  1    tagged queueing
  4570.  0    soft reset
  4571.  
  4572. Bitfields for CAM asynchronous event capabilities:
  4573. Bit(s)    Description    (Table 1886)
  4574.  31-24    vendor-specific
  4575.  23-8    reserved
  4576.  7    new devices found during rescan
  4577.  6    SIM module deregistered
  4578.  5    SIM module registered
  4579.  4    sent bus device reset to target
  4580.  3    SCSI AEN
  4581.  2    reserved
  4582.  1    unsolicited reselection
  4583.  0    unsolicited SCSI bus reset
  4584.  
  4585. (Table 1887)
  4586. Values completion callback function is called with:
  4587.     interrupts disabled
  4588.     ES:BX -> completed CCB
  4589.  
  4590. (Table 1888)
  4591. Values asynchronous callback function is called with:
  4592.     AH = opcode
  4593.     AL = path ID generating callback
  4594.     DH = target ID causing event
  4595.     DL = LUN causing event
  4596.     CX = data byte count (if applicable)
  4597.     ES:BX -> data buffer (if applicable)
  4598. Return: all registers preserved
  4599. --------d-4F8200CX8765-----------------------
  4600. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  4601.     AX = 8200h
  4602.     CX = 8765h
  4603.     DX = CBA9h
  4604. Return: AH = 00h if installed
  4605.         CX = 9ABCh
  4606.         DX = 5678h
  4607.         ES:DI -> "SCSI_CAM"
  4608. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  4609. --------N-50---------------------------------
  4610. INT 50 - TIL Xpert AIM (X.25)
  4611.     AH = function
  4612. --------H-50---------------------------------
  4613. INT 50 - IRQ0 relocated by DESQview
  4614. Range:    INT 50 to INT F8, selected automatically
  4615. Notes:    this is the default location for older versions; DESQview v2.26+
  4616.       searches for unused ranges of interrupts and uses the lowest
  4617.       available range in its list for relocating these IRQs and the next
  4618.       lowest for relocating IRQ8-IRQ15
  4619.     a range of eight interrupts starting at a multiple of 8 is considered
  4620.       available if all vectors are identical and it has not been excluded
  4621.       with an /XB:nn commandline switch
  4622.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  4623.       are available, F8h and then 50h are used anyway)
  4624.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  4625.       are available, F8h and then F0h are used anyway)
  4626. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  4627. SeeAlso: INT D8"Screen Thief"
  4628. --------H-50---------------------------------
  4629. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  4630. SeeAlso: INT 51"IBM 3278"
  4631. --------H-50---------------------------------
  4632. INT 50 - IRQ0 relocated by OS/2 v1.x
  4633. SeeAlso: INT 51"OS/2"
  4634. ----------50---------------------------------
  4635. INT 50 - TI Professional PC - FATAL SOFTWARE ERROR TRAP
  4636.     no details available
  4637. Note:    for system use only
  4638. SeeAlso: INT 40"TI Professional",INT 4F"TI Professional"
  4639. SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
  4640. --------V-500000-----------------------------
  4641. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  4642.     AX = 0000h
  4643.     ES:BX -> name string or ES:0000h if none
  4644.     CH,CL = row,column of upper left corner
  4645.     DH,DL = row,column of lower right corner
  4646. Return: AX = window handle or
  4647.         0000h if not installed
  4648.         FFFFh on error
  4649. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  4650. --------V-500001-----------------------------
  4651. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  4652.     AX = 0001h
  4653.     DI = window handle
  4654. SeeAlso: AX=0000h
  4655. --------V-500002-----------------------------
  4656. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  4657.     AX = 0002h
  4658.     BL = character
  4659.     BH = attribute
  4660.     DL = column
  4661.     DH = row
  4662.     DI = window handle
  4663. Return: AX = status
  4664.         0000h if successful
  4665.         FFFFh if outside window
  4666. SeeAlso: AX=0000h
  4667. --------l-500002-----------------------------
  4668. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  4669.     AX = 0002h
  4670.     ES:BX -> text string
  4671.     DH,DL = row,column of upper left corner
  4672.     DI = window handle
  4673. Return: AX = status
  4674.         0000h successful (text fits in window)
  4675.         FFFFh error
  4676. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4677.       published in the June/July 1990 issue of PC Thuis Power magazine
  4678. --------V-500003-----------------------------
  4679. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  4680.     AX = 0003h
  4681.     ES:BX -> text string
  4682.     CX = string length (0000h if ASCIZ string)
  4683.     DL = position (FFh centered, else flush left)
  4684.     DH = starting row
  4685.     DI = window handle
  4686. Return: AX = status
  4687.         0000h successful
  4688.         FFFFh did not fit in window
  4689. --------l-500003-----------------------------
  4690. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  4691.     AX = 0003h
  4692.     ES:BX -> data to be written
  4693.     CX = number of bytes to write
  4694.     DS:SI -> filename
  4695. Return: AX = status
  4696.         0000h successful
  4697.         FFFFh error
  4698. SeeAlso: AX=0004h"Shell"
  4699. --------V-500004-----------------------------
  4700. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  4701.     AX = 0004h
  4702.     CH = type
  4703.         00h any key
  4704.         01h 'J' or 'N' (Dutch for yes/no)
  4705. Return: AX = key
  4706. SeeAlso: INT 16/AH=00h
  4707. --------l-500004-----------------------------
  4708. INT 50 - PC Thuis Organizer Shell - READ FILE
  4709.     AX = 0004h
  4710.     ES:BX -> buffer for data
  4711.     CX = number of bytes to read or 0000h for entire file
  4712.     DL = file type
  4713.         01h setting shell
  4714.         02h setting sterm
  4715.         03h INT21 file
  4716.     DS:SI -> filename
  4717. Return: AX = status
  4718.         0000h successful
  4719.         FFFFh error
  4720. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  4721.       is needed, a type number should be requested from him through the
  4722.       magazine:
  4723.         PC Thuis BV
  4724.         Spaarne 55
  4725.         2011 CE HAARLEM
  4726.         The Netherlands
  4727. SeeAlso: AX=0003h"Shell"
  4728. --------V-500005-----------------------------
  4729. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  4730.     AX = 0005h
  4731.     BL = new attribute
  4732.     CH,CL = row,column of upper left corner
  4733.     DH,DL = row,column of lower right corner
  4734.     DI = window handle
  4735. --------l-500005-----------------------------
  4736. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  4737.     AX = 0005h
  4738.     ES:BX -> prompt string (ES:0000h if no prompt)
  4739. Return: AX = key pressed
  4740.         0000h "J" (Dutch "Ja" = "Yes")
  4741.         FFFFh "N" (Dutch "Nee" = "No")
  4742. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4743.       published in the June/July 1990 issue of PC Thuis Power magazine
  4744. SeeAlso: AX=0008h"PC Thuis"
  4745. --------V-500006-----------------------------
  4746. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  4747.     AX = 0006h
  4748.     ES:BX -> text string
  4749.     CH = type of input (see #1889)
  4750.     DH,DL = row,column of upper left corner
  4751.     DI = window handle
  4752. Return: AX = key which terminated entry
  4753.         0000h Enter
  4754.         0001h Esc
  4755.         0002h Down arrow
  4756.         0003h Up arrow
  4757.         0004h F10
  4758.  
  4759. (Table 1889)
  4760. Values for type of input to Vanderaart Text Windows:
  4761.  00h    everything
  4762.  01h    uppercase only
  4763.  02h    positive numbers
  4764.  03h    Dutch postal code ("9999 AA")
  4765.  04h    'J' or 'N' (Dutch yes/no)
  4766.  05h    telephone or FAX number
  4767.  06h    positive or negative number
  4768.  07h    date (dd/mm/yy)
  4769.  08h    money
  4770.  09h    '1' through '8'
  4771.  0Ah    '1' through '4'
  4772.  0Bh    uppercase filenames
  4773. --------l-500006-----------------------------
  4774. INT 50 - PC Thuis Organizer Shell - ALERT USER
  4775.     AX = 0006h
  4776.     ES:BX -> string
  4777. --------l-500007-----------------------------
  4778. INT 50 - PC Thuis Organizer Shell - DO LINE
  4779.     AX = 0007h
  4780.     ES:BX -> text string
  4781.     CX = string length in bytes (0000h if NUL-terminated)
  4782.     DL = FFh to center string, else flush left
  4783.     DH = upper left row
  4784.     DI = window handle
  4785. Return: AX = status
  4786.         0000h successful
  4787.         FFFFh error
  4788. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4789.       published in the June/July 1990 issue of PC Thuis Power magazine
  4790. SeeAlso: AX=0008h
  4791. --------l-500008-----------------------------
  4792. INT 50 - PC Thuis Organizer Shell - DO MENU
  4793.     AX = 0008h
  4794.     ES:BX -> menu structure
  4795. Return: AL = index 1 or FFh if not selected
  4796.     AH = index 2 or FFh if not selected
  4797.     BL = index 3 or FFh if not selected
  4798.     BH = index 4 or FFh if not selected
  4799. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  4800. --------l-500009-----------------------------
  4801. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  4802.     AX = 0009h
  4803.     ES:BX -> message string
  4804. SeeAlso: AX=000Ah
  4805. --------l-50000A-----------------------------
  4806. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  4807.     AX = 000Ah
  4808. SeeAlso: AX=0009h
  4809. --------l-50000B-----------------------------
  4810. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  4811.     AX = 000Bh
  4812.     BL = new attribute
  4813.     CH,CL = row,column of upper left corner
  4814.     DH,DL = row,column of lower right corner
  4815.     DI = window handle
  4816. --------l-50000C-----------------------------
  4817. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  4818.     AX = 000Ch
  4819.     ES:BX -> request structure
  4820. Return: AX = status
  4821.         0000h confirmed
  4822.         FFFFh denied
  4823. SeeAlso: AX=0008h
  4824. --------l-50000D-----------------------------
  4825. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  4826.     AX = 000Dh
  4827.     ES:BX -> text string
  4828.     CL = length
  4829.     CH = input type (see #1890)
  4830.     DH,DL = row,column of upper left corner
  4831.     DI = window handle
  4832. Return: AX = result code
  4833. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4834.       published in the June/July 1990 issue of PC Thuis Power magazine
  4835.  
  4836. Bitfields for input type:
  4837. Bit(s)    Description    (Table 1890)
  4838.  0    force uppercase
  4839.  1    integer
  4840.  2    no spaces allowed
  4841.  3    no cursor keys
  4842. --------l-50000E-----------------------------
  4843. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  4844.     AX = 000Eh
  4845.     BL = character
  4846.     BH = attribute
  4847.     DH,DL = row,column at which to plot
  4848.     DI = window handle
  4849. Return: AX = status
  4850.         0000h successful
  4851.         FFFFh errror
  4852. --------l-50000F-----------------------------
  4853. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  4854.     AX = 000Fh
  4855.     BL = character
  4856.     BH = attribute
  4857.     DI = window handle
  4858. --------l-500010-----------------------------
  4859. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  4860.     AX = 0010h
  4861.     ES:BX -> first menu structure
  4862.     CL = hotkey to look up
  4863. Return: AL = index 1 or FFh if not selected
  4864.     AH = index 2 or FFh if not selected
  4865.     BL = index 3 or FFh if not selected
  4866.     BH = index 4 or FFh if not selected
  4867. Index:    hotkeys;PC Thuis Organizer Shell
  4868. --------l-500011-----------------------------
  4869. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  4870.     AX = 0011h
  4871.     DS:SI -> source
  4872.     ES:DI -> destination
  4873.     CX = number of bytes to move (0000h = until NUL string terminator???)
  4874. SeeAlso: AX=0012h
  4875. --------l-500012-----------------------------
  4876. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  4877.     AX = 0012h
  4878.     DS:SI -> source
  4879.     ES:DI -> destination
  4880.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  4881. Return: AX = status
  4882.         0000h same
  4883.         FFFFh different
  4884. SeeAlso: AX=0011h
  4885. --------l-500013-----------------------------
  4886. INT 50 - PC Thuis Organizer Shell - GET KEY
  4887.     AX = 0013h
  4888.     CH = type flags
  4889.         bit 0: force uppercase
  4890.         bit 1: integer
  4891.         bit 2: no spaces
  4892. Return: AX = keystroke
  4893. --------l-500014-----------------------------
  4894. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  4895.     AX = 0014h
  4896.     BL = direction
  4897.         06h up
  4898.         07h down
  4899.     BH = attribute
  4900.     DI = window handle
  4901. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  4902. --------l-500015-----------------------------
  4903. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  4904.     AX = 0015h
  4905.     BL = handle size
  4906.         00h 65536 bytes (64K)
  4907.         01h 65535 bytes (64K-1)
  4908.         02h 32768 bytes (32K)
  4909.         03h 32767 bytes (32K-1)
  4910. Return: AX = segment
  4911. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4912.       published in the June/July 1990 issue of PC Thuis Power magazine
  4913. SeeAlso: INT 21/AH=48h
  4914. --------H-51---------------------------------
  4915. INT 51 - IRQ1 relocated by DESQview
  4916. Range:    INT 51 to INT F9, selected automatically
  4917. Note:    this is the default location for older versions; see INT 50"DESQview"
  4918.       for details of interrupt relocation
  4919. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4920. --------H-51---------------------------------
  4921. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  4922. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  4923. --------H-51---------------------------------
  4924. INT 51 - IRQ1 relocated by OS/2 v1.x
  4925. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  4926. ----------51---------------------------------
  4927. INT 51 - TI Professional PC - RESTART TIMING EVENT
  4928.     no details available
  4929. Note:    for system use only
  4930. SeeAlso: INT 50"TI Professional",INT 52"TI Professional"
  4931. --------H-52---------------------------------
  4932. INT 52 - IRQ2 relocated by DESQview
  4933. Range:    INT 52 to INT FA, selected automatically
  4934. Note:    this is the default location for older versions; see INT 50"DESQview"
  4935.       for details of interrupt relocation
  4936. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4937. --------H-52---------------------------------
  4938. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4939. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4940. ----------52---------------------------------
  4941. INT 52 - TI Professional PC - CANCEL TIMING EVENT
  4942.     no details available
  4943. Note:    for system use only
  4944. SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
  4945. --------H-53---------------------------------
  4946. INT 53 - IRQ3 relocated by DESQview
  4947. Range:    INT 53 to INT FB, selected automatically
  4948. Note:    this is the default location for older versions; see INT 50"DESQview"
  4949.       for details of interrupt relocation
  4950. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4951. --------H-53---------------------------------
  4952. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4953. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4954. ----------53---------------------------------
  4955. INT 53 - TI Professional PC - SVC INTERFACE
  4956.     no details available
  4957. Note:    for use by multitaskers
  4958. SeeAlso: INT 50"TI Professional",INT 54"TI Professional"
  4959. --------N-53---------------------------------
  4960. INT 53 - WEB??? - API
  4961.     BX = function
  4962.         0000h ???
  4963.         AX = ???
  4964.         Return: AX = ???
  4965.         0004h ???
  4966.         0009h ???
  4967.         0015h
  4968.         AX = ???
  4969.         DX = ???
  4970.         0017h
  4971. Return: ???
  4972. Notes:    the installation check consists of looking for the signature "WEBCO"
  4973.       immediately prior to the interrupt handler
  4974.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  4975. Index:    installation check;unknown|installation check;WEBCO
  4976. --------H-54---------------------------------
  4977. INT 54 - IRQ4 relocated by DESQview
  4978. Range:    INT 54 to INT FC, selected automatically
  4979. Note:    this is the default location for older versions; see INT 50"DESQview"
  4980.       for details of interrupt relocation
  4981. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4982. --------H-54---------------------------------
  4983. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4984. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4985. ----------54---------------------------------
  4986. INT 54 - TI Professional PC - ACTIVATE TASK SUBROUTINE
  4987.     no details available
  4988. Note:    for use by multitaskers
  4989. SeeAlso: INT 50"TI Professional",INT 53"TI Professional"
  4990. ----------545400-----------------------------
  4991. INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
  4992.     AX = 5400h
  4993. Return: AX = 0054h if installed
  4994.         CX:DX -> INT function handler
  4995. --------H-55---------------------------------
  4996. INT 55 - IRQ5 relocated by DESQview
  4997. Range:    INT 55 to INT FD, selected automatically
  4998. Note:    this is the default location for older versions; see INT 50"DESQview"
  4999.       for details of interrupt relocation
  5000. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  5001. --------H-55---------------------------------
  5002. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  5003. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  5004. --------b-55---------------------------------
  5005. INT 55 - TI Professional PC - RESERVED FOR FUTURE USE
  5006.     no details available
  5007. SeeAlso: INT 50"TI Professional",INT 56"TI Professional"
  5008. --------H-56---------------------------------
  5009. INT 56 - IRQ6 relocated by DESQview
  5010. Range:    INT 56 to INT FE, selected automatically
  5011. Note:    this is the default location for older versions; see INT 50"DESQview"
  5012.       for details of interrupt relocation
  5013. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  5014. --------H-56---------------------------------
  5015. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  5016. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  5017. --------b-56---------------------------------
  5018. INT 56 - TI Professional PC - RESERVED FOR FUTURE USE
  5019.     no details available
  5020. SeeAlso: INT 50"TI Professional",INT 55"TI Professional"
  5021. --------H-57---------------------------------
  5022. INT 57 - IRQ7 relocated by DESQview
  5023. Range:    INT 57 to INT FF, selected automatically
  5024. Note:    this is the default location for older versions; see INT 50"DESQview"
  5025.       for details of interrupt relocation
  5026. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  5027. --------H-57---------------------------------
  5028. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  5029. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  5030. --------b-57---------------------------------
  5031. INT 57 - TI Professional PC - CRT MAPPING HOOK
  5032.     no details available
  5033. SeeAlso: INT 49"TI Professional",INT 50"TI Professional"
  5034. --------H-58---------------------------------
  5035. INT 58 - IRQ8 relocated by DESQview 2.26+
  5036. Range:    INT 58 to INT F8, selected automatically
  5037. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5038. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 70
  5039. --------H-58---------------------------------
  5040. INT 58 - IRQ0 relocated by DoubleDOS
  5041. SeeAlso: INT 08
  5042. --------b-58---------------------------------
  5043. INT 58 - TI Professional PC - SYSTEM TIMER 25ms HOOK
  5044.     no details available
  5045. SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
  5046. SeeAlso: INT 5A"TI Professional"
  5047. --------H-59---------------------------------
  5048. INT 59 - IRQ9 relocated by DESQview 2.26+
  5049. Range:    INT 59 to INT F9, selected automatically
  5050. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5051. SeeAlso: INT 50"DESQview",INT 58"DESQview",INT 5A"DESQview",INT 71
  5052. --------H-59---------------------------------
  5053. INT 59 - IRQ1 relocated by DoubleDOS
  5054. SeeAlso: INT 09
  5055. --------b-59---------------------------------
  5056. INT 59 - TI Professional PC - COMMON ROM HARDWARE INTERRUPT EXIT VECTOR
  5057. Desc:    all hardware interrupts on the TI Pro jump indirectly to the handler
  5058.       pointed at by this interrupt vector to finish their handling of
  5059.       the hardware interrupt
  5060. Notes:    the default handler decrements the interrupt count, restores registers
  5061.       (including the stack pointer), sends an EOI to the interrupt
  5062.       controller, and finally does an IRET
  5063.     can be used by multitaskers which need to get control on a regular
  5064.       basis
  5065. SeeAlso: INT 40"TI Professional",INT 47"TI Professional"
  5066. SeeAlso: INT 53"TI Professional"
  5067. --------V-59---------------------------------
  5068. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  5069.     DS:DX -> block of 5 array pointers
  5070. Return: CF set on error
  5071.         AX = error code
  5072.     CF clear if successful
  5073.         AX = return code
  5074. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  5075.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  5076.     also used by the IBM Graphic Development Toolkit
  5077. --------H-5A---------------------------------
  5078. INT 5A - IRQ10 relocated by DESQview 2.26+
  5079. Range:    INT 5A to INT FA, selected automatically
  5080. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5081. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 5B"DESQview",INT 72
  5082. --------H-5A---------------------------------
  5083. INT 5A - IRQ2 relocated by DoubleDOS
  5084. SeeAlso: INT 0A
  5085. --------N-5A---------------------------------
  5086. INT 5A - PC Cluster adapter BIOS entry address
  5087.     ???
  5088. Return: ???
  5089. SeeAlso: INT 5B"PC Cluster"
  5090. --------b-5A---------------------------------
  5091. INT 5A - TI Professional PC - SYSTEM TIMER 100ms HOOK
  5092.     no details available
  5093. Note:    this interrupt is invoked on every fourth timer interrupt
  5094. SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
  5095. SeeAlso: INT 58"TI Professional"
  5096. --------H-5B---------------------------------
  5097. INT 5B - IRQ11 relocated by DESQview 2.26+
  5098. Range:    INT 5B to INT FB, selected automatically
  5099. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5100. SeeAlso: INT 50"DESQview",INT 5A"DESQview",INT 5C"DESQview",INT 73
  5101. --------H-5B---------------------------------
  5102. INT 5B - IRQ3 relocated by DoubleDOS
  5103. SeeAlso: INT 0B
  5104. --------N-5B---------------------------------
  5105. INT 5B - PC cluster adapter - RELOCATED INT 19
  5106. SeeAlso: INT 19,INT 5A"PC Cluster"
  5107. --------N-5B---------------------------------
  5108. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  5109.     ES:BX -> Network Control Block (see #1891)
  5110. Return: AL = status (see #1893)
  5111. SeeAlso: INT 5C
  5112.  
  5113. Format of Starlan Network Control Block:
  5114. Offset    Size    Description    (Table 1891)
  5115.  00h    BYTE    ncb_command (see also #1895)
  5116.         70h send net Break
  5117.  01h    BYTE    ncb_retcode
  5118.  02h    BYTE    ncb_lsn
  5119.  03h    BYTE    ncb_num
  5120.  04h    DWORD    -> ncb_buffer
  5121.  08h    WORD    ncb_length
  5122.  0Ah 16 BYTEs    ncb_callname
  5123.  1Ah 16 BYTEs    ncb_name
  5124.  2Ah    BYTE    ncb_rto
  5125.  2Bh    BYTE    ncb_sto
  5126.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  5127.  30h    BYTE    ncb_lana_num
  5128.  31h    BYTE    ncb_cmd_cplt
  5129.  32h    DWORD    -> ncb_vname
  5130.  36h    BYTE    ncb_vnamelen
  5131.  37h  9 BYTEs    ncb_reserve
  5132. Note:    fields 00h-31h are the same as for a standard NetBIOS NCB (see #1894)
  5133. --------N-5B---------------------------------
  5134. INT 5B - Microsoft Network Transport Layer Interface
  5135. Note:    used by MS-NET for executing network commands
  5136. SeeAlso: INT 5C"NetBIOS"
  5137. --------N-5B---------------------------------
  5138. INT 5B - used by Alloy NTNX
  5139. --------N-5B---------------------------------
  5140. INT 5B - ISOLAN Multi Protocol Software
  5141.     ES:BX -> Transfer Control Block (see #1892)
  5142. Return: AL = status
  5143. Note:    this software interface allows multiple protocols/software packages
  5144.       to access a BICC 411x network card
  5145.  
  5146. Format of ISOLAN Transfer Control Block:
  5147. Offset    Type    Description    (Table 1892)
  5148.  00h    BYTE    command code
  5149.         B3h Status
  5150.         F2h Activate
  5151.         F3h Deactivate
  5152.         F4h Send Data
  5153.  01h    BYTE    command identity
  5154.  02h    BYTE    virtual circuit ID
  5155.  03h    WORD    buffer length
  5156.  05h    DWORD    buffer pointer
  5157.  09h    BYTE    expedited data flag
  5158.  0Ah    BYTE    cancelable flag
  5159.  0Bh 16 BYTEs    local network address
  5160.  1Bh 16 BYTEs    remote network address
  5161.  2Bh    DWORD    asynchronous notification routine
  5162.  30h    DWORD    local network number
  5163.  34h    DWORD    remote network number
  5164.  38h    BYTE    call timeout
  5165.  39h    BYTE    not used
  5166.  3Ah  8 BYTEs    reserved
  5167.  42h    BYTE    command code extension
  5168.  43h    WORD    Blue Book MAC type
  5169. --------b-5B---------------------------------
  5170. INT 5B - TI Professional PC - KEYBOARD MAPPING HOOK
  5171.     no details available
  5172. Note:    used to remap the keyboard
  5173. SeeAlso: INT 15/AH=4Fh,INT 4A"TI Professional",INT 59"TI Professional"
  5174. SeeAlso: INT 5C"TI Professional",INT 5D"TI Professional"
  5175. SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
  5176. --------U-5B5254DL04-------------------------
  5177. INT 5B U - SitBack v3.02R - GET ???
  5178.     AX = 5254h
  5179.     DL = 04h
  5180. Return: ES:BX -> ??? in resident portion
  5181. Program: SitBack is a background file backup utility by SitBack Technologies,
  5182.       Inc. which initiates backups whenever the system is idle
  5183. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  5184. --------U-5B8485DL70-------------------------
  5185. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  5186.     AX = 8485h
  5187.     DL = 70h
  5188. Return: CX = 8485h if installed
  5189.         DX:AX -> ??? (configuration data?)
  5190. Program: SitBack is a background file backup utility by SitBack Technologies,
  5191.       Inc. which initiates backups whenever the system is idle
  5192. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  5193. --------U-5B8485DL71-------------------------
  5194. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  5195.     AX = 8485h
  5196.     DL = 71h
  5197. Return: ES:BX -> FAR entry point to ???
  5198. Note:    the flag which is modified is located at the address returned by
  5199.        AX=5254h/DL=04h
  5200. SeeAlso: AX=8485h/DL=72h
  5201. --------U-5B8485DL72-------------------------
  5202. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  5203.     AX = 8485h
  5204.     DL = 72h
  5205. Note:    the flag which is modified is located at the address returned by
  5206.        AX=5254h/DL=04h
  5207. SeeAlso: AX=8485h/DL=71h
  5208. --------U-5B8485DL73-------------------------
  5209. INT 5B U - SitBack v3.02R - ???
  5210.     AX = 8485h
  5211.     DL = 73h
  5212.     ???
  5213. Return: ???
  5214. --------U-5B8485DL74-------------------------
  5215. INT 5B U - SitBack v3.02R - ???
  5216.     AX = 8485h
  5217.     DL = 74h
  5218.     ???
  5219. Return: ???
  5220. --------U-5B8485DL75-------------------------
  5221. INT 5B U - SitBack v3.02R - ???
  5222.     AX = 8485h
  5223.     DL = 75h
  5224.     CX = ???
  5225. Return: ???
  5226. SeeAlso: AX=8485h/DL=76h
  5227. --------U-5B8485DL76-------------------------
  5228. INT 5B U - SitBack v3.02R - ???
  5229.     AX = 8485h
  5230.     DL = 76h
  5231.     CX = ???
  5232. Return: ???
  5233. Note:    conditionally calls the code for AX=8485h/DL=75h
  5234. SeeAlso: AX=8485h/DL=75h
  5235. --------U-5B8485DL77-------------------------
  5236. INT 5B U - SitBack v3.02R - SET ??? FLAG
  5237.     AX = 8485h
  5238.     DL = 77h
  5239. --------U-5B8485DL78-------------------------
  5240. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  5241.     AX = 8485h
  5242.     DL = 78h
  5243. Return: CX = 5342h if supported
  5244.         ES = AX = segment of TSR data
  5245. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  5246. --------U-5B8485DL79-------------------------
  5247. INT 5B U - SitBack v3.02R - GET DTA
  5248.     AX = 8485h
  5249.     DL = 79h
  5250. Return: CX = 5342h if supported
  5251.         ES:BX -> DTA set by last INT 21/AH=1Ah
  5252. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  5253. SeeAlso: INT 21/AH=1Ah
  5254. --------U-5B8485DL7A-------------------------
  5255. INT 5B U - SitBack v3.02R - TOGGLE ???
  5256.     AX = 8485h
  5257.     DL = 7Ah
  5258. Return: CX = 5342h if supported
  5259.         AL = new value of ??? (00h or 01h)
  5260. --------H-5C---------------------------------
  5261. INT 5C - IRQ12 relocated by DESQview 2.26+
  5262. Range:    INT 5C to INT FC, selected automatically
  5263. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5264. SeeAlso: INT 50"DESQview",INT 5B"DESQview",INT 5D"DESQview",INT 74
  5265. --------H-5C---------------------------------
  5266. INT 5C - IRQ4 relocated by DoubleDOS
  5267. SeeAlso: INT 0C
  5268. --------N-5C---------------------------------
  5269. INT 5C - NetBIOS INTERFACE
  5270.     ES:BX -> network control block (NCB) (see #1894)
  5271. Return: AL = status (see #1893)
  5272. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  5273.       programming interface to the IBM PC Network; the first implementation
  5274.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  5275.       current networks support NetBIOS as the session layer.
  5276. Note:    The Sytek PCnet card uses DMA 3.
  5277. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  5278.  
  5279. (Table 1893)
  5280. Values for NetBIOS status:
  5281.  00h    successful
  5282.  01h    bad buffer size
  5283.  03h    invalid NETBIOS command
  5284.  05h    timeout
  5285.  06h    receive buffer too small
  5286.  07h    No-ACK command failed
  5287.  08h    bad session number
  5288.  09h    LAN card out of memory
  5289.  0Ah    session closed
  5290.  0Bh    command has been cancelled
  5291.  0Dh    name already exists
  5292.  0Eh    local name table full
  5293.  0Fh    name still in use, can't delete
  5294.  11h    local session table full
  5295.  12h    remote PC not listening
  5296.  13h    bad NCB_NUM field
  5297.  14h    no answer to CALL or no such remote
  5298.  15h    name not in local name table
  5299.  16h    duplicate name
  5300.  17h    bad delete
  5301.  18h    abnormal end
  5302.  19h    name error, multiple identical names in use
  5303.  1Ah    bad packet
  5304.  21h    network card busy
  5305.  22h    too many commands queued
  5306.  23h    bad LAN card number
  5307.  24h    command finished while cancelling
  5308.  26h    command can't be cancelled
  5309.  30h    name defined by another process (OS/2)
  5310.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  5311.  35h    required operating system resources exhausted (OS/2)
  5312.  36h    maximum applications exceeded (OS/2)
  5313.  37h    no SAPs available for NetBIOS (OS/2)
  5314.  38h    requested resources not available (OS/2)
  5315.  40h    Lana System Error
  5316.  41h    Lana Remote Hot Carrier
  5317.  42h    Lana Local Hot Carrier
  5318.  43h    Lana No Carrier Detected
  5319.  44h    unusual network condition
  5320.  45h-4Dh hardware error
  5321.  4Eh    token ring is broken
  5322.  4Fh    token ring error
  5323.  50h    adapter malfunction
  5324.  F7h    error in explicit INITIALIZE
  5325.  F8h    error in implicit OPEN
  5326.  F9h    TOKREUI internal error
  5327.  FAh    hardware adapter testing
  5328.  FBh    NetBIOS emulator not found
  5329.  FCh    OPEN or OPEN_SAP failure
  5330.  FDh    unexpected adapter closure
  5331.  FFh    NetBIOS busy (command pending)
  5332.  
  5333. Format of NetBIOS Network Control Block:
  5334. Offset    Size    Description    (Table 1894)
  5335.  00h    BYTE    command code (see #1895)
  5336.  01h    BYTE    return code (see #1893)
  5337.  02h    BYTE    local session number (LSN)
  5338.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  5339.  04h    DWORD    -> I/O buffer
  5340.  08h    WORD    length of data in buffer
  5341.  0Ah 16 BYTEs    remote system to call
  5342.  1Ah 16 BYTEs    network name of local machine
  5343.  2Ah    BYTE    receive timeout in 1/2 seconds
  5344.  2Bh    BYTE    send timeout in 1/2 seconds
  5345.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  5346.  30h    BYTE    network adapter number on which to execute command
  5347.         00h-03h IBM NetBIOS specs
  5348.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  5349.  31h    BYTE    command completion code (see returned status above)
  5350.  32h 14 BYTEs    reserved for network card
  5351.  
  5352. (Table 1895)
  5353. Values for NetBIOS command code field in NCB:
  5354.  10h    start session with NCB_NAME name (call)
  5355.  11h    listen for call
  5356.  12h    end session with NCB_NAME name (hangup)
  5357.  14h    send data via NCB_LSN
  5358.  15h    receive data from a session
  5359.  16h    receive data from any session
  5360.  17h    send multiple data buffers
  5361.  20h    send unACKed message (datagram)
  5362.  21h    receive datagram
  5363.  22h    send broadcast datagram
  5364.  23h    receive broadcast datagram
  5365.  30h    add name to name table
  5366.  31h    delete name from name table
  5367.  32h    reset adapter card and tables
  5368.  33h    get adapter status (see #1896)
  5369.  34h    status of all sessions for name (see #1898)
  5370.  35h    cancel
  5371.  36h    add group name to name table
  5372.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  5373.  70h    unlink from IBM remote program (no F0h function)
  5374.  71h    send data without ACK
  5375.  72h    send multiple buffers without ACK
  5376.  72h    UngermannBass Register (conflicts with above function)
  5377.  73h    UngermannBass SendNmc
  5378.  74h    UngermannBass Callniu
  5379.  75h    UngermannBass Calladdr
  5380.  76h    UngermannBass Listenaddr
  5381.  77h    UngermannBass SendPkt
  5382.  78h    find name
  5383.  78h    UngermannBass RcvPkt (conflicts with above function)
  5384.  79h    token-ring protocol trace
  5385.  79h    UngermannBass SendAttn (conflicts with above function)
  5386.  7Ah    UngermannBass RcvAttn
  5387.  7Bh    UngermannBass Listenniu
  5388.  7Ch    UngermannBass RcvRaw
  5389.  7Dh    UngermannBass SendNmc2
  5390.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  5391.       completion code both set to 03h, while invalid functions return only
  5392.       return code field set to 03h)
  5393. Note:    OR any of the above except 70h with 80h for non-waiting call
  5394.  
  5395. Format of NetBIOS structure "astatus":
  5396. Offset    Size    Description    (Table 1896)
  5397.  00h  6 BYTEs as_id
  5398.  06h    BYTE  as_jumpers
  5399.  07h    BYTE  as_post
  5400.  08h    BYTE  as_major
  5401.  09h    BYTE  as_minor
  5402.  0Ah    WORD  as_interval
  5403.  0Ch    WORD  as_crcerr
  5404.  0Eh    WORD  as_algerr
  5405.  10h    WORD  as_colerr
  5406.  12h    WORD  as_abterr
  5407.  14h    DWORD as_tcount
  5408.  18h    DWORD as_rcount
  5409.  1Ch    WORD  as_retran
  5410.  1Eh    WORD  as_xresrc
  5411.  20h  8 BYTEs as_res0
  5412.  28h    WORD  as_ncbfree
  5413.  2Ah    WORD  as_ncbmax
  5414.  2Ch    WORD  as_ncbx
  5415.  2Eh  4 BYTEs as_res1
  5416.  32h    WORD  as_sespend
  5417.  34h    WORD  as_msp
  5418.  36h    WORD  as_sesmax
  5419.  38h    WORD  as_bufsize
  5420.  3Ah    WORD  as_names
  5421.  3Ch 16 name structures     as_name (see #1897)
  5422.  
  5423. Format of NetBIOS structure "name":
  5424. Offset    Size    Description    (Table 1897)
  5425.  00h 16 BYTEs "nm_name" symbolic name
  5426.  10h    BYTE  "nm_num" number associated with name
  5427.  11h    BYTE  nm_status
  5428.  
  5429. Format of NetBIOS structure "sstatus":
  5430. Offset    Size    Description    (Table 1898)
  5431.  00h    BYTE    number of sessions being reported
  5432.  01h    BYTE    number of sessions with this name
  5433.  02h    BYTE    number of outstanding receive datagrams
  5434.  03h    BYTE    number of outstanding ReceiveAnys
  5435.  04h    var    session structures (see #1899)
  5436.  
  5437. Format of NetBIOS structure "session":
  5438. Offset    Size    Description    (Table 1899)
  5439.  00h    BYTE    local session number
  5440.  01h    BYTE    state
  5441.         01h listen pending
  5442.         02h call pending
  5443.         03h session established
  5444.         04h hangup pending
  5445.         05h hangup done
  5446.         06h session aborted
  5447.  02h 16 BYTEs    local name
  5448.  12h 16 BYTEs    remote name
  5449.  22h    BYTE    number of outstanding receives
  5450.  23h    BYTE    number of outstanding sends/chainsends
  5451. --------N-5C---------------------------------
  5452. INT 5C - TOPS INTERFACE
  5453.     ES:BX -> Network Control Block
  5454. Note:    TOPS card uses DMA 1, 3 or none.
  5455. --------N-5C---------------------------------
  5456. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  5457.     DX:BX -> control block (see #1901)
  5458. Return: none
  5459. Range:    INT 5Ch to INT 70h
  5460. Notes:    the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  5461.       handler; this serves as the installation check
  5462. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  5463.  
  5464. (Table 1900)
  5465. Values for ATALK.SYS command code:
  5466.  01h    "AT_INIT"        initialize the driver
  5467.  02h    "AT_KILL"
  5468.  03h    "AT_GETNETINFO" get current network info incl init status
  5469.  04h    "AT_GETCLOCKTICKS"
  5470.  05h    "AT_STARTTIMER"
  5471.  06h    "AT_RESETTIMER"
  5472.  07h    "AT_CANCELTIMER"
  5473.  10h    "LAP_INSTALL"
  5474.  11h    "LAP_REMOVE"
  5475.  12h    "LAP_WRITE"
  5476.  13h    "LAP_READ"
  5477.  14h    "LAP_CANCEL"
  5478.  20h    "DDP_OPENSOCKET"
  5479.  21h    "DDP_CLOSESOCKET"
  5480.  22h    "DDP_WRITE"
  5481.  23h    "DDP_READ"
  5482.  24h    "DDP_CANCEL"
  5483.  30h    "NBP_REGISTER"
  5484.  31h    "NBP_REMOVE"
  5485.  32h    "NBP_LOOKUP"
  5486.  33h    "NBP_CONFIRM"
  5487.  34h    "NBP_CANCEL"
  5488.  35h    "ZIP_GETZONELIST"
  5489.  36h    "ZIP_GETMYZONE"
  5490.  37h    "ZIP_TAKEDOWN"
  5491.  38h    "ZIP_BRINGUP"
  5492.  40h    "ATP_OPENSOCKET"
  5493.  41h    "ATP_CLOSESOCKET"
  5494.  42h    "ATP_SENDREQUEST"
  5495.  43h    "ATP_GETREQUEST"
  5496.  44h    "ATP_SENDRESPONSE"
  5497.  45h    "ATP_ADDRESPONSE"
  5498.  46h    "ATP_CANCELTRANS"
  5499.  47h    "ATP_CANCELRESPONSE"
  5500.  48h    "ATP_CANCELREQUEST"
  5501.  50h    "ASP_GETPARMS"
  5502.  51h    "ASP_CLOSESESSION"
  5503.  52h    "ASP_CANCEL"
  5504.  53h    "ASP_INIT"
  5505.  54h    "ASP_KILL"
  5506.  55h    "ASP_GETSESSION"
  5507.  56h    "ASP_GETREQUEST"
  5508.  57h    "ASP_CMDREPLY"
  5509.  58h    "ASP_WRTCONTINUE"
  5510.  59h    "ASP_WRTREPLY"
  5511.  5Ah    "ASP_CLOSEREPLY"
  5512.  5Bh    "ASP_NEWSTATUS"
  5513.  5Ch    "ASP_ATTENTION"
  5514.  5Dh    "ASP_GETSTATUS"
  5515.  5Eh    "ASP_OPENSESSION"
  5516.  5Fh    "ASP_COMMAND"
  5517.  60h    "ASP_WRITE"
  5518.  61h    "ASP_GETATTENTION"
  5519.  70h    "PAP_OPEN"
  5520.  71h    "PAP_CLOSE"
  5521.  72h    "PAP_READ"
  5522.  73h    "PAP_WRITE"
  5523.  74h    "PAP_STATUS"
  5524.  75h    "PAP_REGNAME"
  5525.  76h    "PAP_REMNAME"
  5526.  77h    "PAP_INIT"
  5527.  78h    "PAP_NEWSTATUS"
  5528.  79h    "PAP_GETNEXTJOB"
  5529.  7Ah    "PAP_KILL"
  5530.  7Bh    "PAP_CANCEL"
  5531.  
  5532. Format of AppleTalk control block:
  5533. Offset    Size    Description    (Table 1901)
  5534.  00h    WORD    command code (see #1900)
  5535.         OR with the following flags
  5536.         8000h start command then return
  5537.         4000h wait for interrupt service to complete
  5538.  02h    WORD    returned status
  5539.         0000h success (already initialized if func 01h)
  5540.  04h    DWORD    pointer to completion function
  5541.  08h    WORD    network number
  5542.  0Ah    BYTE    node ID
  5543. ---if general func (01h,03h), control block continues:
  5544.  0Bh    BYTE    "inf_abridge"
  5545.  0Ch    WORD    "inf_config"
  5546.  0Eh    DWORD    pointer to buffer
  5547.  12h    WORD    buffer size
  5548. ---if DDP function (20h-24h), control block continues:
  5549.  0Bh    BYTE    "ddp_addr_socket"
  5550.  0Ch    BYTE    "ddp_socket"
  5551.  0Dh    BYTE    "ddp_type"
  5552.  0Eh    DWORD    pointer to buffer
  5553.  12h    WORD    buffer size
  5554.  14h    BYTE    "ddp_chksum"
  5555. ---if Name Binding Protocol (30h-34h), control block continues:
  5556.  0Bh    BYTE    "nbp_addr_socket"
  5557.  0Ch    WORD    "nbp_toget"
  5558.  0Eh    DWORD    pointer to buffer (see #1902)
  5559.  12h    WORD    buffer size
  5560.  14h    BYTE    "nbp_interval"
  5561.  15h    BYTE    "nbp_retry"
  5562.  16h    DWORD    "nbp_entptr"
  5563. ---if AppleTalk Transaction Protocol (42h), control block continues:
  5564.  0Bh    BYTE    "atp_addr_socket"
  5565.  0Ch    WORD    "atp_socket"
  5566.  0Eh    DWORD    pointer to buffer
  5567.  12h    WORD    buffer size
  5568.  14h    BYTE    "atp_interval"
  5569.  15h    BYTE    "atp_retry"
  5570.  16h    BYTE    ATP flags
  5571.         bit 5: exactly one transaction
  5572.  17h    BYTE    "atp_seqbit"
  5573.  18h    BYTE    transaction ID
  5574.  19h  4 BYTEs    ATP user bytes
  5575.  1Dh    BYTE    number of BDS buffers
  5576.  1Eh    BYTE    number of BDS responses
  5577.  1Fh    DWORD    pointer to BDS buffers (see #1903)
  5578.  
  5579. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  5580. Offset    Size    Description    (Table 1902)
  5581.  00h    WORD    "tup_address_network"
  5582.  02h    BYTE    "tup_address_notid"
  5583.  03h    BYTE    "tup_address_socket"
  5584.  04h    BYTE    "tup_enum"
  5585.  05h 99 BYTEs    name
  5586.  
  5587. Format of BDS entries:
  5588. Offset    Size    Description    (Table 1903)
  5589.  00h    DWORD    pointer to buffer
  5590.  04h    WORD    size of buffer
  5591.  06h    WORD    BDS data size
  5592.  08h  4 BYTEs    "bds_userbytes"
  5593. --------N-5C---------------------------------
  5594. INT 5C - IBM 802.2 INTERFACE (LLC)
  5595.     ES:BX -> CCB (see #1904)
  5596. Return: none
  5597.  
  5598. Format of IBM 802.2 CCB:
  5599. Offset    Size    Description    (Table 1904)
  5600.  00h    BYTE    adapter
  5601.  01h    BYTE    command code
  5602.  02h    BYTE    return code
  5603.  03h    BYTE    work
  5604.  04h    DWORD    pointer to ???
  5605.  08h    DWORD    pointer to completion function???
  5606.  0Ch    DWORD    pointer to parameters???
  5607. --------b-5C---------------------------------
  5608. INT 5C - TI Professional PC - KEYBOARD PAUSE KEY VECTOR
  5609. Desc:    toggle a pause flag which is checked by the CRT Device Service Routine
  5610.       (see INT 49"TI Professional") and causes it to temporarily halt the
  5611.       machine on the next video-related function (until a key is pressed)
  5612. SeeAlso: INT 09"IRQ1",INT 4A"TI Professional",INT 59"TI Professional"
  5613. SeeAlso: INT 5B"TI Professional",INT 5D"TI Professional"
  5614. SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
  5615. --------N-5C---------------------------------
  5616. INT 5C - $25 LAN - INSTALLATION CHECK
  5617. Notes:    current versions only check whether the vector is 0000h:0000h or not
  5618.     future versions are supposed to have the signature "NET" in the three
  5619.       bytes preceding the INT 5C handler
  5620. --------N-5C04-------------------------------
  5621. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  5622.     AH = 04h
  5623.     AL = COM port (0 = default)
  5624.     CX = wait count in character times (should be at least 100)
  5625. Return: ZF set if link alive
  5626. --------H-5D---------------------------------
  5627. INT 5D - IRQ13 relocated by DESQview 2.26+
  5628. Range:    INT 5D to INT FD, selected automatically
  5629. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5630. SeeAlso: INT 50"DESQview",INT 5C"DESQview",INT 5E"DESQview",INT 75
  5631. --------H-5D---------------------------------
  5632. INT 5D - IRQ5 relocated by DoubleDOS
  5633. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  5634. --------b-5D---------------------------------
  5635. INT 5D - TI Professional PC - KEYBOARD BREAK KEY VECTOR
  5636.     no details available
  5637. SeeAlso: INT 09"IRQ1",INT 4A"TI Professional",INT 59"TI Professional"
  5638. SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
  5639. SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
  5640. --------H-5E---------------------------------
  5641. INT 5E - IRQ14 relocated by DESQview 2.26+
  5642. Range:    INT 5E to INT FE, selected automatically
  5643. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5644. SeeAlso: INT 50"DESQview",INT 5D"DESQview",INT 5F"DESQview",INT 76
  5645. --------H-5E---------------------------------
  5646. INT 5E - IRQ6 relocated by DoubleDOS
  5647. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  5648. --------b-5E---------------------------------
  5649. INT 5E - TI Professional PC - KEYBOARD PRINT-SCREEN VECTOR
  5650. Desc:    dump the screen to the printer
  5651. Notes:    hooked by TI MS-DOS, which provides a PRTSCRN character device which
  5652.       can invoke screen prints when a decimal digit (indicating the type
  5653.       of screen dump) is written to it
  5654.     the TI MS-DOS print-screen routine allows selective dumps of text
  5655.       only, graphics only, or text and graphics superimposed, in either
  5656.       normal or reverse, by pressing the appropriate keystroke combination:
  5657.       Shift-Print, Ctrl-Print, Alt-Print, Shift-Alt-Print, Ctrl-Alt-Print,
  5658.       or Shift-Ctrl-Print.
  5659.     the BIOS default routine for this vector is an IRET
  5660. SeeAlso: INT 05,INT 4A"TI Professional",INT 59"TI Professional"
  5661. SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
  5662. SeeAlso: INT 5D"TI Professional",INT 5F"TI Professional"
  5663. --------H-5F---------------------------------
  5664. INT 5F - IRQ15 relocated by DESQview 2.26+
  5665. Range:    INT 5F to INT FF, selected automatically
  5666. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5667. SeeAlso: INT 50"DESQview",INT 5E"DESQview",INT 77
  5668. --------H-5F---------------------------------
  5669. INT 5F - IRQ7 relocated by DoubleDOS
  5670. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  5671. --------b-5F---------------------------------
  5672. INT 5F C - TI Professional PC - KEYBOARD QUEUEING VECTOR
  5673. Desc:    hook for multitaskers to be informed when a keypress is placed in the
  5674.       keyboard buffer
  5675. SeeAlso: INT 09,INT 4A"TI Professional",INT 59"TI Professional"
  5676. SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
  5677. SeeAlso: INT 5D"TI Professional",INT 5E"TI Professional"
  5678. --------b-5F00-------------------------------
  5679. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  5680.     AH = 00h
  5681.     AL = video mode
  5682.         03h text,CGA color (100LX/200LX)
  5683.         06h 640x200 CGA graphics (100LX/200LX)
  5684.         07h text, system manager compliant
  5685.         20h 240x128 mono graphics, system manager compliant
  5686.         87h text, not system manager compliant
  5687.         A0h 240x128 mono graphics, not system manager compliant
  5688. Notes:    the defaults after setting the mode to graphics are (0,0) logical
  5689.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  5690.       pixel replacement FORCE, line type and fill mask all bits set
  5691.     modes 03h and 06h can also be set with the standard INT 10/AH=00h
  5692. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  5693. --------b-5F01-------------------------------
  5694. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET FILL MASK
  5695.     AH = 01h
  5696.     ES:DI -> 8-byte fill mask
  5697. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  5698.       when drawing filled rectangles; it is always aligned with the byte
  5699.       boundaries of video memory, regardless of the actual boundaries of
  5700.       the rectangle
  5701. SeeAlso: AH=02h
  5702. --------b-5F02-------------------------------
  5703. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFO
  5704.     AH = 02h
  5705.     ES:DI -> graphics info record (see #1905)
  5706. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  5707.  
  5708. Format of HP 95LX graphics info record:
  5709. Offset    Size    Description    (Table 1905)
  5710.  00h    BYTE    current video mode
  5711.  01h    BYTE    default video mode
  5712.  02h    WORD    display width in pixels
  5713.  04h    WORD    display height in pixels
  5714.  06h    WORD    current pen column
  5715.  08h    WORD    current pen row
  5716.  0Ah    WORD    current line type
  5717.  0Ch    WORD    current replacement rule
  5718.  0Eh    WORD    current pen color
  5719.  10h    WORD    current leftmost column of clip region
  5720.  12h    WORD    current rightmost column of clip region
  5721.  14h    WORD    current topmost row of clip region
  5722.  16h    WORD    current bottommost row of clip region
  5723.  18h    WORD    current column of logical origin
  5724.  1Ah    WORD    current row of logical origin
  5725.  1Ch  8 BYTEs    current fill mask
  5726. --------b-5F03-------------------------------
  5727. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  5728.     AH = 03h
  5729.     CX = column
  5730.     DX = row
  5731. SeeAlso: AH=04h
  5732. --------b-5F04-------------------------------
  5733. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET CLIP REGION
  5734.     AH = 04h
  5735.     CX = left-most column
  5736.     DX = top-most row
  5737.     SI = right-most column
  5738.     DI = bottom-most row
  5739. SeeAlso: AH=03h
  5740. --------b-5F05-------------------------------
  5741. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  5742.     AH = 05h
  5743.     AL = fill type
  5744.         00h outline, using current line type and color
  5745.         01h solid, using current color
  5746.         02h pattern, using current fill mask and color
  5747.     DX,CX = row,column of other corner of rectangle
  5748. Note:    the rectangle is drawn starting at the current pen position
  5749. SeeAlso: AH=01h,AH=06h,AH=07h
  5750. --------b-5F06-------------------------------
  5751. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW LINE
  5752.     AH = 06h
  5753.     DX,CX = row,column of end point
  5754. Note:    the line is drawn starting at the current pen position
  5755. SeeAlso: AH=05h,AH=07h
  5756. --------b-5F07-------------------------------
  5757. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PLOT POINT
  5758.     AH = 07h
  5759.     DX,CX = row,column of point
  5760. Note:    also sets pen position to the specified point
  5761. SeeAlso: AH=06h,AH=08h,AH=0Ch
  5762. --------b-5F08-------------------------------
  5763. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - MOVE PEN
  5764.     AH = 08h
  5765.     DX,CX = row,column of new pen position
  5766. SeeAlso: AH=07h,AH=09h
  5767. --------b-5F09-------------------------------
  5768. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET PEN COLOR
  5769.     AH = 09h
  5770.     AL = new color (00h = white, 01h = black)
  5771. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  5772. --------b-5F0A-------------------------------
  5773. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  5774.     AH = 0Ah
  5775.     AL = new replacement rule
  5776.         00h force
  5777.         01h AND
  5778.         02h OR
  5779.         03h XOR
  5780.         ---100LX/200LX---
  5781.         04h InvForce
  5782.         05h InvAND
  5783.         06h    InvOR
  5784.         07h InvXOR
  5785.         08h Txt
  5786. SeeAlso: AH=01h,AH=09h,AH=0Bh
  5787. --------b-5F0B-------------------------------
  5788. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LINE TYPE
  5789.     AH = 0Bh
  5790.     CX = new line type
  5791. Note:    the line type specifies 16 bits which are repeated over and over while
  5792.       drawing the pixels of a line
  5793. SeeAlso: AH=09h,AH=0Ah
  5794. --------b-5F0C-------------------------------
  5795. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET PIXEL
  5796.     AH = 0Ch
  5797.     DX,CX = row,column of pixel to read
  5798. Return: AX = pixel color
  5799. SeeAlso: AH=07h
  5800. --------b-5F0D-------------------------------
  5801. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET IMAGE
  5802.     AH = 0Dh
  5803.     DX,CX = row,column of first corner
  5804.     BP,SI = row,column of second corner
  5805.     ES:DI -> image buffer (see #1906)
  5806. Note:    the specified corners are included in the saved image
  5807. SeeAlso: AH=0Eh
  5808.  
  5809. Format of HP 95LX image buffer:
  5810. Offset    Size    Description    (Table 1906)
  5811.  00h    WORD    number of planes (always 01h on HP 95LX)
  5812.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  5813.  04h    WORD    image width in pixels
  5814.  06h    WORD    image height in pixels
  5815.  08h  N BYTEs    image data
  5816.         requires (WIDTH+7)/8 * HEIGHT bytes
  5817. --------b-5F0E-------------------------------
  5818. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PUT IMAGE
  5819.     AH = 0Eh
  5820.     AL = replacement rule (see #1907)
  5821.     DX,CX = row,column of top left corner
  5822.     ES:DI -> image buffer (see #1906)
  5823. Note:    if the specified image does not fit completely on the screen, this call
  5824.       does nothing
  5825. SeeAlso: AH=0Dh
  5826.  
  5827. Bitfields for replacement rule:
  5828. Bit(s)    Description    (Table 1907)
  5829.  2    invert image before applying rule
  5830.  1-0    function (00 force, 01 AND, 10 OR, 11 XOR)
  5831. --------b-5F0F-------------------------------
  5832. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - WRITE TEXT
  5833.     AH = 0Fh
  5834.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  5835.     DX,CX = row,column of first character's top left corner
  5836.     ES:DI -> ASCIZ text
  5837. --------b-5F10-------------------------------
  5838. INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - GET FONT POINTER
  5839.     AH = 10h
  5840.     CX = font size of desired font
  5841.         0808h  8x8    small  (80x25 text)
  5842.         0A0Bh 11x10 medium (64x18 text)
  5843.         100Ch 12x16 large  (40x16 text)
  5844. Return: DX:AX -> ptr to font or 0000h:fontID# if built-in font
  5845. SeeAlso: AH=11h
  5846. --------b-5F11-------------------------------
  5847. INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - SET CURRENT FONT
  5848.     AH = 11h
  5849.     ES:DI -> ptr to font or 0000h:fontID# for built-in font
  5850. Note:    this function should be called immediately after AH=10h with the
  5851.       pointer supplied by that call
  5852. SeeAlso: AH=10h
  5853. --------*-60---------------------------------
  5854. INT 60 - reserved for user interrupt
  5855. --------v-60---------------------------------
  5856. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  5857. Desc:    The "Zero Bug" virus hooks this vector.     It considers itself installed
  5858.       if offset 103h of the handler's segment contains the bytes "ZE"
  5859. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  5860. --------d-60---------------------------------
  5861. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5862. SeeAlso: INT 41,INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  5863. SeeAlso: INT C0"AMI"
  5864. Notes:    this vector stores the first four bytes of the parameter table for
  5865.       hard disk 0
  5866.     these vectors are used by the following Adaptec controllers:
  5867.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5868.     these vectors are NOT used by the following Adaptec controllers:
  5869.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5870. --------b-60---------------------------------
  5871. INT 60 - TI Professional PC - SYSTEM ROM DATA AREA POINTER (NOT A VECTOR!)
  5872. Desc:    the low word of this vector contains the segment of the RAM data area
  5873.       to be used by the system ROM at F400h:A000h, and the high word
  5874.       contains the length of the data area (see #1908)
  5875. SeeAlso: INT 61"TI Professional PC",INT 66"TI Professional PC"
  5876.  
  5877. Format of TI Professional System ROM data area:
  5878. Offset    Size    Description    (Table 1908)
  5879.  00h    BYTE    port 00h shadow
  5880.  01h    BYTE    port 03h shadow
  5881.  02h    BYTE    port 04h shadow
  5882.  03h    WORD    system configuration word (see #1909)
  5883.  05h    BYTE    25ms count
  5884.  06h    WORD    offset of timing event 1 (0008h)
  5885.  08h    WORD    (event 1) offset of timing event 2 (0010h)
  5886.  0Ah    BYTE    (event 1) unused (FFh)
  5887.  0Bh    BYTE    (event 1) active flag (00h = off, 80h = on)
  5888.  0Ch    WORD    (event 1) count-down until end of event    
  5889.  0Eh    WORD    (event 1) event routine (in segment F400h) to call at timeout
  5890.  10h    WORD    (event 2) offset of timing event 3 (0018h)
  5891.  12h    BYTE    (event 2) unused (FFh)
  5892.  13h    BYTE    (event 2) active flag (00h = off, 80h = on)
  5893.  14h    WORD    (event 2) count-down until end of event    
  5894.  16h    WORD    (event 2) event routine (in segment F400h) to call at timeout
  5895.  18h    ...
  5896. Note:    timing event 1 is the disk I/O timeout, and event 2 is the floppy disk
  5897.       motor timeout
  5898.  
  5899. Bitfields for TI Professional System Configuration Word:
  5900. Bit(s)    Description    (Table 1909)
  5901.  0    drive A: installed
  5902.  1    drive B: installed
  5903.  2    drive C: installed
  5904.  3    drive D: installed
  5905.  4    drive A: is 80-track
  5906.  5    drive A: is double-sided
  5907.  6    60-Hz (USA,etc.) system instead of 50-Hz (Europe)
  5908.  7    hard disk installed
  5909.  8    serial port 1 installed
  5910.  9    serial port 2 installed
  5911.  10    serial port 3 installed
  5912.  11    serial port 4 installed
  5913.  14-12    installed graphics planes
  5914.     000 none
  5915.     001 plane A
  5916.     111 planes A, B, and C
  5917.  15    clock installed
  5918. SeeAlso: #1908
  5919. --------b-60---------------------------------
  5920. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  5921. Desc:    supplies a number of subfunctions which perform such functions as
  5922.       drawing boxes and menus, and provide input line editing
  5923. SeeAlso: INT 61"Atari"
  5924. --------V-60---------------------------------
  5925. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5926. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  5927. Range:    INT 60 to INT 66, selected by searching for first free vector
  5928. Note:    the Nabbit installation check consists of testing whether the
  5929.       interrupt vector points at the ASCIZ signature string "iG"
  5930.       (69h 47h 00h)
  5931. --------V-60---------------------------------
  5932. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5933. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  5934. Range:    INT 60 to INT 6F, selected by searching for first free vector
  5935. Notes:    the Buffit installation check consists of testing whether the
  5936.       interrupt vector points at the ASCII signature "Buffit  "
  5937.     there is a private entry point (see #1910) immediately following the
  5938.       signature string, i.e. eight bytes beyond the address pointed at
  5939.       by the interrupt vector
  5940.  
  5941. (Table 1910)
  5942. Call Buffit private entry point with:
  5943.     AH = function
  5944.         00h get information and hotkey state
  5945.         01h get information and toggle hotkey state
  5946. Return: AH = new hotkey state (00h enabled, 01h disabled)
  5947.     AL = hotkey scan code
  5948.     BH = hotkey shift states
  5949.     BL = ??? (01h)
  5950.     CX = segment of resident code
  5951.     DH = interrupt number used for signature pointer
  5952.     DL = ??? (00h)
  5953.     SI = INT 09 handler offset
  5954.     DI = INT 21 handler offset
  5955. Index:    hotkeys;Buffit
  5956. --------r-60---------------------------------
  5957. INT 60 - PC-IPC API
  5958.     STACK:    DWORD    pointer to parameter block (see #1911)
  5959. Return: STACK:    unchanged
  5960. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  5961.       allows communication between independent programs
  5962. Range:    INT 00 to INT FF, selected by commandline switch
  5963.  
  5964. Format of PC-IPC parameter block:
  5965. Offset    Size    Description    (Table 1911)
  5966.  00h    WORD    caller's ID
  5967.  02h    WORD    to ID
  5968.  04h    WORD    command code (see #1912)
  5969.  06h    WORD    returned status (see #1913)
  5970.  08h    WORD    returned error code (see #1914)
  5971.  0Ah    WORD    size of data
  5972.  0Ch    DWORD    pointer to data buffer
  5973.  
  5974. (Table 1912)
  5975. Values for PC-IPC command code:
  5976.  01h "IPC_CMND_INQUIRE"     inquire current status
  5977.     set status field, writes WORD to data buffer containing free
  5978.       message space in bytes, and sets the "size" field to the
  5979.       number of messages waiting
  5980.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  5981.     ignored unless called with the same ID that disabled PC-IPC
  5982.  03h "IPC_CMND_DISABLE" disable PC-IPC
  5983.  04h "IPC_CMND_INSTALL" reset PC-IPC
  5984.  06h "IPC_CMND_RDATA"    read data
  5985.     returns first message in data buffer, sets "size" to message length
  5986.       and "to ID" field to sender's ID
  5987.     if no messages available, bit 4 of status is cleared and "size" is
  5988.       set to zero
  5989.  07h "IPC_CMND_SDATA"    send data
  5990.  08h "IPC_CMND_REQID"    require user ID
  5991.     create a new recognized ID and return in "caller's ID" field
  5992.  09h "IPC_CMND_DELID"    cancel user ID
  5993.     delete caller's ID from pool of recognized IDs
  5994.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  5995.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  5996.     string representing version returned in data buffer, "size" field
  5997.       set to length of string
  5998.  
  5999. Bitfields for returned status:
  6000. Bit(s)    Description    (Table 1913)
  6001.  0    unused
  6002.  1    IPC enabled
  6003.  2    IPC installed
  6004.  3    error
  6005.  4    message(s) available
  6006.  
  6007. (Table 1914)
  6008. Values for PC-IPC error code:
  6009.  00h    no error
  6010.  01h    invalid command or parameter
  6011.  02h    only process 0 can install/reset IPC
  6012.  03h    process can not install/reset IPC
  6013.  04h    IPC is not enabled
  6014.  05h    process can not disable IPC
  6015.  06h    invalid destination process ID
  6016.  07h    invalid sending process ID
  6017.  08h    invalid data destination
  6018.  09h    no more process IDs available
  6019.  0Ah    can not relinquish that process ID
  6020.  0Bh    message space is full
  6021.  0Ch    IPC is not installed
  6022. --------R-60---------------------------------
  6023. INT 60 - Tangram Arbiter - API
  6024. Desc:    Arbiter makes a PC disk look like a slow disk over an SNA link to an
  6025.       IBM mainframe
  6026. Range:    INT 60h to INT 66h, selected by configuration parameter
  6027. Notes:    identified by string "@ARB_API" immediately following a short jump at
  6028.       the interrupt handler address
  6029. --------N-60---------------------------------
  6030. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  6031.     ES:BX -> request packet (see #1915)
  6032. Return: request packet updated
  6033. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  6034.       which was used in creating this description
  6035.     the installation check consists of testing for the WORD 4142h ('AB')
  6036.       immediately preceding the interrupt handler
  6037. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  6038.       and has a fencepost error even in that test, functions 000Bh and
  6039.       XX01h-XX0Bh (XX nonzero) branch to random locations
  6040. SeeAlso: INT 2F/AX=7A40h
  6041.  
  6042. Format of Excelan request packet:
  6043. Offset    Size    Description    (Table 1915)
  6044.  00h 12 BYTEs    ???
  6045.  0Ch    WORD    (ret) error code (see #1916)
  6046.  0Eh    DWORD    -> FAR function for ???
  6047.  12h    WORD    function number
  6048.         0001h ???
  6049.         0002h NOP
  6050.         0003h NOP
  6051.         0004h NOP
  6052.         0005h ???
  6053.         0006h get ??? record
  6054.         0007h NOP
  6055.         0008h reset ???
  6056.         0009h NOP
  6057.         000Ah set ???
  6058.     ???
  6059. ---function 01h---
  6060.  20h    BYTE    (call) subfunction (32h-3Bh)
  6061.         3Bh non-blocking I/O request (will be tested every clock tick)
  6062.  21h    BYTE    (ret) error code
  6063.         00h successful
  6064.         09h invalid connection number
  6065.         2Ah bad connection type
  6066.         45h ???
  6067. ---function 01h, subfunction 32h---
  6068.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  6069. ---function 01h, subfunction 34h---
  6070.  26h    WORD    (call) ???
  6071.  28h    WORD    (call) ???
  6072.  2Ah    WORD    (call) ???
  6073. ---function 01h, subfunction 35h---
  6074.  1Ah    WORD    (call) connection number???
  6075.  26h    WORD    (ret) ???
  6076. ---function 01h, subfunction 36h---
  6077.  1Ah    WORD    (call) connection number???
  6078.  38h    WORD    ???
  6079. ---function 01h, subfunction 37h---
  6080.  24h    WORD    (ret) ???
  6081.  26h    WORD    (ret) ???
  6082. ---function 01h, subfunction 38h---
  6083.  1Ah    WORD    (call) connection number???
  6084. ---function 01h, subfunction 3Ah---
  6085.  22h    WORD    (call) ???
  6086.         667Eh ???
  6087.         667Fh ???
  6088.  24h    BYTE    (call 667Eh) ???
  6089.  24h    WORD    (return 667Fh) ???
  6090. ---function 01h, subfunction 3Bh---
  6091.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  6092.         function called with AX = 0000h
  6093.                      STACK: DWORD -> request packet
  6094.                         WORD 0000h
  6095.             should return STACK unchanged
  6096.  1Ah    WORD    (call) connection number???
  6097.  21h    BYTE    (ret) set to 01h when I/O becomes possible
  6098.  22h    BYTE    (call) direction (00h write, 01h read)
  6099.  34h    DWORD    (ret) -> next pending request packet
  6100. ---function 05h---
  6101.  1Eh    WORD    (call) ???
  6102.  20h    WORD    (call) ???
  6103.  34h    DWORD    (call) -> ???
  6104. ---function 06h---
  6105.  16h    DWORD    (call) -> buffer for ??? record (see #1917)
  6106.  1Ah    WORD    (call) number of bytes to copy
  6107.  22h    WORD    (ret) number of bytes transferred
  6108. ---function 08h---
  6109.  14h    WORD    (ret) ??? (0001h)
  6110. ---function 0Ah---
  6111.  16h    DWORD    (call) -> WORD ???
  6112.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  6113.  
  6114. (Table 1916)
  6115. Values for Excelan error code:
  6116.  0000h    successful
  6117.  002Dh    invalid function
  6118.  0050h    ???
  6119.  
  6120. Format of ??? record:
  6121. Offset    Size    Description    (Table 1917)
  6122.  00h    WORD    offset of ???
  6123.  02h  4 BYTEs    ???
  6124.  06h    DWORD    IP address (big-endian)
  6125.  0Ah  6 BYTEs    physical address (big-endian)
  6126.     ???
  6127. --------N-60---------------------------------
  6128. INT 60 - TCPDRV 2.01 - TCP/IP Application Binary Interface (ABI)
  6129. Note:    The handler for the interrupt will start with a 2-byte NEAR jump
  6130.       instruction, followed by the ASCIZ signature string "TCP DRVR".
  6131.     To find the interrupt being used by the driver, an application
  6132.       should scan through interrupt vectors 60h to 7Fh until it finds
  6133.       one with the "TCP DRVR" string.
  6134.     This specification is being proposed by Peter R. Tattam from the
  6135.       University of Tasmania.
  6136. Index:    installation check;TCPDRV
  6137. --------G-60---------------------------------
  6138. INT 60 U - INTRSPY/CMDSPY v1.0 only - API
  6139. Program: INTRSPY is a script-driven debugger included with the book
  6140.       _Undocumented_DOS_.
  6141. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  6142.     The installation check is to
  6143.       a) determine that the handler is an IRET instruction
  6144.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  6145.     If INTRSPY is installed, the DWORD immediately after the IRET stores
  6146.       its entry point (see #1918)
  6147.     INTRSPY v2.0 (included with the second edition of the book) no longer
  6148.       supports this API
  6149. Index:    installation check;INTRSPY
  6150.  
  6151. (Table 1918)
  6152. Call INTRSPY v1.0 entry point with:
  6153.     AH = function
  6154.         00h ???
  6155.         01h set current directory (for use in reporting)
  6156.         ES:DI -> counted string containing directory name (max 79 char)
  6157.         02h set name of script file
  6158.         ES:DI -> counted string containing file name (max 79 chars)
  6159.         03h set script arguments
  6160.         ES:DI -> counted string containing arguments (max 79 chars)
  6161.         04h get directory set with function 01h
  6162.         ES:DI -> 80-byte buffer for directory name
  6163.         05h get name of script file
  6164.         ES:DI -> 80-byte buffer for script filename
  6165.         06h get script arguments
  6166.         ES:DI -> 80-byte buffer for script arguments
  6167.         07h get ???
  6168.         CL = 00h-15h specifies what to get
  6169.         ES:DI -> WORD to be set with desired value on return
  6170.         08h get ???
  6171.         ES:DI -> WORD to be set with returned value
  6172.         09h get ???
  6173.         ES:DI -> WORD to be set with returned value
  6174.         0Bh store code for interrupt handler???
  6175.         ES:DI -> data
  6176.         CX = number of bytes
  6177.         0Ch ???
  6178.         ES:DI -> ???
  6179.         0Dh get ???
  6180.         ES:DI -> BYTE to be set with returned value
  6181.         0Eh set ??? flag
  6182.         0Fh clear ??? flag
  6183.         10h ???
  6184.         Return: AL = 04h or 05h if failed
  6185.         11h ???
  6186.         Return: AL = 05h if failed
  6187.         12h get ???
  6188.         ES:DI -> buffer
  6189.         Return: CX = number of bytes returned in buffer
  6190.         13h ???
  6191. Return: AH = 00h
  6192.     AL = status
  6193.         00h successful
  6194.         01h invalid function
  6195.         02h ???
  6196.         03h ???
  6197.         04h ???
  6198.         05h ???
  6199. --------u-60---------------------------------
  6200. INT 60 U - PC/370 v4.2 - ???
  6201.     ???
  6202. Return: ???
  6203. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  6204. Range:    INT 00 to INT FF, selected by patching the executable
  6205. Note:    the documentation includes instructions for patching the system for
  6206.       another interrupt
  6207. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  6208. --------r-60---------------------------------
  6209. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  6210. SeeAlso: INT 61"JPI"
  6211. --------N-60---------------------------------
  6212. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  6213. Range:    INT 20 to INT FF
  6214. Notes:    The handler for the interrupt will start with a 3-byte jump
  6215.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  6216.       terminating NUL is significant).
  6217.     To find the interrupt being used by the driver, an application should
  6218.       scan through interrupt vectors 20h to FFh (60h through 80h for
  6219.       v1.09- of the specification) until it finds one with the "PKT DRVR"
  6220.       string.
  6221.     AH values of 80h to FFh have been reserved for user-defined additions.
  6222. --------I-60---------------------------------
  6223. INT 60 u - 3270-PC CONTROL PROGRAM - ???
  6224. --------b-60----DI0100-----------------------
  6225. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  6226.     DI = 0100h
  6227.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6228.         DWORD    pointer to event record (see #1920)
  6229. Return: event record filled
  6230.     STACK unchanged
  6231. Note:    this call will timeout after about 500ms
  6232. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  6233.  
  6234. (Table 1919)
  6235. Values for HP 95LX event type:
  6236.  00h    no events
  6237.  01h    keystroke available
  6238.  02h    Ctrl-Break
  6239.  03h    reactivation (always follows deactivation event)
  6240.  04h    about to deactivate (sleep)
  6241.     next get-event call will not return until reactivated
  6242.  05h    forced application termination
  6243.  06h    1-2-3 bridge service request (only given to 1-2-3)
  6244.  07h    request to grow
  6245.  08h    request to shrink
  6246.  09h    application's alarm expired
  6247.  0Ah    daily chance to set an alarm
  6248.  0Bh    system date or time has been changed
  6249.  
  6250. Format of HP 95LX event record:
  6251. Offset    Size    Description    (Table 1920)
  6252.  00h    WORD    event type (see #1919)
  6253.  02h    WORD    ASCII code page 850 translation of keystroke
  6254.         or grow/shrink amount in paragraphs or 0000h if error
  6255.         or alarm expiration data
  6256.  04h    BYTE    scan code from BIOS
  6257.  05h    BYTE    shift key states at time keystroke is retrieved
  6258.  06h    WORD    LICS translation of keystroke
  6259.  08h    BYTE    function key number (1-2-3 only)
  6260.  09h    DWORD    pointer to 1-2-3 bridge record (see #1922)
  6261.         or pointer to time change structure (see #1921)
  6262. Note:    if the System Manager is awaiting the conclusion of a bridge service
  6263.       or grow/shrink call and the event type field is set to FFFFh on
  6264.       entry, the SysMgr will resume
  6265.  
  6266. Format of HP 95LX time change structure:
  6267. Offset    Size    Description    (Table 1921)
  6268.  00h    WORD    old year
  6269.  02h    BYTE    old month
  6270.  03h    BYTE    old date
  6271.  04h    BYTE    old day
  6272.  05h    BYTE    old hour
  6273.  06h    BYTE    old minute
  6274.  07h    BYTE    old second
  6275.  08h    BYTE    old hundredth of a second
  6276.  09h  9 BYTEs    new time in same format as old time
  6277. --------b-60----DI0101-----------------------
  6278. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  6279.     DI = 0101h
  6280.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6281.         DWORD pointer to event record (INT 60/DI=0100h)
  6282. Return: event record filled
  6283.     STACK unchanged
  6284. Note:    this call returns immediately if no event is available
  6285. SeeAlso: INT 60/DI=0100h
  6286. --------b-60----DI0102-----------------------
  6287. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  6288.     DI = 0102h
  6289.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6290. Return: ???
  6291.     STACK unchanged
  6292. --------b-60----DI0104-----------------------
  6293. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  6294.     DI = 0104h
  6295.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6296.         DWORD pointer to bridge record (see #1922)
  6297. Return: ???
  6298.     STACK unchanged
  6299.  
  6300. Format of HP 95LX bridge record:
  6301. Offset    Size    Description    (Table 1922)
  6302.  00h    WORD    function code (see #1923)
  6303.  02h    WORD    return code from 1-2-3
  6304.  04h 16 BYTEs    ASCII range name
  6305.  14h    WORD    start column of range
  6306.  16h    WORD    start row of range
  6307.  18h    WORD    end column of range
  6308.  1Ah    WORD    end row of range
  6309.  1Ch    WORD    order in which data is placed in buffer
  6310.  1Eh    WORD    buffer size
  6311.  20h    WORD    offset within bridge record's segment of buffer for cell data
  6312.  
  6313. (Table 1923)
  6314. Values for HP 95LX function code:
  6315.  00h    test
  6316.  01h    get range
  6317.  02h    "GETRANGE_ADDR"
  6318.  03h    "SETRANGE_ADDR"
  6319.  04h    "GETRANGE_DATA"
  6320.  05h    "SETRANGE_DATA"
  6321.  06h    recalculate
  6322.  07h    get cursor
  6323.  08h    set cursor
  6324.  09h    redisplay
  6325.  0Ah    cell type
  6326.  0Bh    "CALCTYPE"
  6327. --------b-60----DI0105-----------------------
  6328. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  6329.     DI = 0105h
  6330.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6331. Return: ???
  6332.     STACK unchanged
  6333. --------b-60----DI0106-----------------------
  6334. INT 60 u - HP 95LX System Manager - YIELD CPU
  6335.     DI = 0106h
  6336.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6337.         DWORD pointer to ???
  6338. Return: ???
  6339.     STACK unchanged
  6340. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  6341. --------b-60----DI0107-----------------------
  6342. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  6343.     DI = 0107h
  6344.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6345.         DWORD pointer to ???
  6346. Return: ???
  6347.     STACK unchanged
  6348. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6349. --------b-60----DI0200-----------------------
  6350. INT 60 u - HP 95LX System Manager - SETUP MENU
  6351.     DI = 0200h
  6352.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6353.         DWORD    pointer to menu data (see #1924)
  6354.         DWORD    pointer to ???
  6355.         WORD    number of items on menu???
  6356.         WORD    ???
  6357.         DWORD    pointer to ???
  6358.         WORD    ???
  6359.         DWORD    pointer to ???
  6360. Return: ???
  6361.     STACK unchanged
  6362. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  6363.  
  6364. Format of HP 95LX menu data:
  6365. Offset    Size    Description    (Table 1924)
  6366.  00h 80 BYTEs    first line of menu text
  6367.  50h 80 BYTEs    second line of menu text
  6368.  A0h 80 BYTEs    third line of menu text
  6369.  F0h    WORD    number of keywords
  6370.  F2h    WORD    index of currently highlighted keyword or FFFFh
  6371.  F4h    WORD    single prompt on top line if nonzero
  6372.  F6h 20 BYTEs    which line each of 20 keywords is located on
  6373. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  6374. 11Eh 20 BYTEs    length of each of 20 keywords
  6375. 132h 20 BYTEs    first letter of each of 20 keywords
  6376. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  6377. --------b-60----DI0201-----------------------
  6378. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  6379.     DI = 0201h
  6380.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6381.         DWORD    pointer to menu data (see #1924)
  6382. Return: ???
  6383.     STACK unchanged
  6384. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  6385. --------b-60----DI0202-----------------------
  6386. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  6387.     DI = 0202h
  6388.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6389.         DWORD    pointer to menu data (see #1924)
  6390. Return: ???
  6391.     STACK unchanged
  6392. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  6393. --------b-60----DI0203-----------------------
  6394. INT 60 u - HP 95LX System Manager - REMOVE MENU
  6395.     DI = 0203h
  6396.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6397.         DWORD    pointer to menu data (see #1924)
  6398. Return: ???
  6399.     STACK unchanged
  6400. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  6401. --------b-60----DI0204-----------------------
  6402. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  6403.     DI = 0204h
  6404.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6405.         DWORD    pointer to menu data (see #1924)
  6406.         WORD    keystroke
  6407.         DWORD    pointer to WORD to receive selection number
  6408. Return: buffer for selection number filled with index of selected menu item or
  6409.       FFFFh if no final selection yet
  6410.     STACK unchanged
  6411. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  6412. --------b-60----DI0205-----------------------
  6413. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  6414.     DI = 0205h
  6415.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6416.         DWORD    pointer to file menu structure (see #1925)
  6417.         DWORD    pointer to edit record (see #1928 at INT 60/DI=0400h)
  6418.         DWORD    pointer to wildcard filespec for initial file list
  6419.         WORD    row???
  6420.         WORD    column???
  6421. Return: ???
  6422.     STACK unchanged
  6423. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  6424.  
  6425. Format of HP 95LX file menu structure:
  6426. Offset    Size    Description    (Table 1925)
  6427.  00h    DWORD    pointer to ASCIZ base directory name
  6428.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  6429.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see #1926)
  6430.  0Ch    WORD    size of file list workspace in bytes
  6431.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  6432.  10h    WORD    starting column
  6433.  12h    WORD    number of lines
  6434.  14h    WORD    number of columns
  6435.  16h    WORD    number of files displayed on each line
  6436. ---the remaining fields are initialized by the System Manager---
  6437.  18h    WORD    0000h if first edit character, else multiline
  6438.  1Ah    WORD    number of files in file list
  6439.  1Ch    WORD    max files workspace has room for
  6440.  1Eh    WORD    file at top of list
  6441.  20h    WORD    index of file to highlight
  6442.  22h    WORD    index of file to unhighlight
  6443.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  6444.  
  6445. Format of HP 95LX file list workspace entry:
  6446. Offset    Size    Description    (Table 1926)
  6447.  00h    BYTE    file attributes
  6448.  01h    WORD    file time (see #0876 at INT 21/AX=5700h)
  6449.  03h    WORD    file date (see #0877 at INT 21/AX=5700h)
  6450.  05h    DWORD    file size
  6451.  09h 13 BYTEs    ASCIZ filename
  6452. --------b-60----DI0206-----------------------
  6453. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  6454.     DI = 0206h
  6455.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6456.         DWORD    pointer to file menu structure (see #1925)
  6457.         DWORD    pointer to edit record (see #1928 at INT 60/DI=0400h)
  6458. Return: ???
  6459.     STACK unchanged
  6460. SeeAlso: INT 60/DI=0205h
  6461. --------b-60----DI0207-----------------------
  6462. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  6463.     DI = 0207h
  6464.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6465.         DWORD    pointer to file menu structure (see #1925)
  6466.         DWORD    pointer to edit record (see #1928 at INT 60/DI=0400h)
  6467.         WORD    keystroke
  6468. Return: AX = status (see #1927)
  6469.     STACK unchanged
  6470. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  6471.  
  6472. (Table 1927)
  6473. Values for HP 95LX System Manager status:
  6474.  0000h    keystroke processed, call INT 60/DI=0206h to refresh menu
  6475.  0001h    redisplay application area before refreshing menu
  6476.  0002h    user confirmed selection, filename is in edit record's buffer
  6477.  0003h    user aborted menu
  6478.  FFFBh    bad filename
  6479.  FFFCh    bad directory
  6480.  FFFDh    bad drive
  6481.  FFFEh    unknown keystroke
  6482.  FFFFh    keystroke known but invalid in current context
  6483. --------b-60----DI0208-----------------------
  6484. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  6485.     DI = 0208h
  6486.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6487.         DWORD    pointer to file menu structure (see #1925)
  6488.         DWORD    pointer to edit record (see #1928 at INT 60/DI=0400h)
  6489. Return: ???
  6490.     STACK unchanged
  6491. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  6492. --------b-60----DI0300-----------------------
  6493. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  6494.     DI = 0300h
  6495.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6496.         WORD    starting row (-3 is topmost, 0 is first user line)
  6497.         WORD    starting column
  6498.         DWORD    pointer to string
  6499.         WORD    length of string
  6500.         WORD    display style: 0000h normal, 0001h reverse video
  6501.         WORD    "OSTYLE"
  6502. Return: ???
  6503.     STACK unchanged
  6504. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  6505. --------b-60----DI0301-----------------------
  6506. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  6507.     DI = 0301h
  6508.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6509.         WORD    starting row (-3 is topmost, 0 is first user line)
  6510.         WORD    starting column
  6511.         WORD    number of rows
  6512.         WORD    number of columns
  6513. Return: ???
  6514.     STACK unchanged
  6515. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  6516. --------b-60----DI0302-----------------------
  6517. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  6518.     DI = 0302h
  6519.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6520.         WORD    starting row???
  6521.         WORD    starting column???
  6522.         WORD    height of scroll region???
  6523.         WORD    width of scroll region???
  6524.         WORD    number of lines to scroll region???
  6525. Return: ???
  6526.     STACK unchanged
  6527. SeeAlso: INT 60/DI=0301h
  6528. --------b-60----DI0303-----------------------
  6529. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  6530.     DI = 0303h
  6531.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6532.         WORD    ???
  6533.         WORD    ???
  6534.         WORD    ???
  6535.         WORD    ???
  6536.         DWORD    pointer to ???
  6537. Return: ???
  6538.     STACK unchanged
  6539. --------b-60----DI0304-----------------------
  6540. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  6541.     DI = 0304h
  6542.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6543.         DWORD    pointer to ???
  6544.         WORD    ???
  6545. Return: ???
  6546.     STACK unchanged
  6547. --------b-60----DI0305-----------------------
  6548. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  6549.     DI = 0305h
  6550.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6551.         WORD    ???
  6552.         WORD    ???
  6553.         DWORD    pointer to ???
  6554.         WORD    ???
  6555. Return: ???
  6556.     STACK unchanged
  6557. --------b-60----DI0307-----------------------
  6558. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  6559.     DI = 0307h
  6560.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6561.         WORD    ???
  6562.         WORD    ???
  6563.         WORD    ???
  6564. Return: ???
  6565.     STACK unchanged
  6566. --------b-60----DI0308-----------------------
  6567. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  6568.     DI = 0308h
  6569.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6570. Return: ???
  6571.     STACK unchanged
  6572. --------b-60----DI0309-----------------------
  6573. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  6574.     DI = 0309h
  6575.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6576.         WORD    new mode
  6577. Return: ???
  6578.     STACK unchanged
  6579. --------b-60----DI030A-----------------------
  6580. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  6581.     DI = 030Ah
  6582.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6583. Return: ???
  6584.     STACK unchanged
  6585. --------b-60----DI030B-----------------------
  6586. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  6587.     DI = 030Bh
  6588.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6589.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  6590.         WORD    column
  6591. Return: ???
  6592.     STACK unchanged
  6593. Note:    cursor is hidden if the specified position is not on the physical
  6594.       display
  6595. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6596. --------b-60----DI0400-----------------------
  6597. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  6598.     DI = 0400h
  6599.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6600.         DWORD    pointer to edit record (see #1928)
  6601.         DWORD    pointer to string to be edited
  6602.         WORD    initial length of string being edited
  6603.         WORD    maximum length of edited string
  6604.         WORD    row of edit field
  6605.         WORD    leftmost column of edit field
  6606. Return: ???
  6607.     STACK unchanged
  6608.  
  6609. Format of HP 95LX edit record:
  6610. Offset    Size    Description    (Table 1928)
  6611.  00h    WORD    current length of edit buffer
  6612.  02h    BYTE    flag for special processing on first character
  6613.  03h    BYTE    flags
  6614.         bit 0: tab handling
  6615.  04h    WORD    editing in prompt window?
  6616.  06h    DWORD    pointer to top line of prompt window message
  6617.  0Ah    WORD    length of top line of prompt
  6618.  0Ch    DWORD    pointer to second line of prompt window message
  6619.  10h    WORD    length of second line of prompt
  6620.  12h 80 BYTEs    workspace for editing
  6621.  62h  2 WORDs    line array needed for multi-line editing
  6622.  66h 36 BYTEs    multi-line edit record (see #1929)
  6623.  8Ah    WORD    displayable columns
  6624.  
  6625. Format of HP 95LX multi-line edit record:
  6626. Offset    Size    Description    (Table 1929)
  6627.  00h    DWORD    pointer to user-supplied edit buffer
  6628.  04h    WORD    length of edit buffer
  6629.  06h    WORD    current cursor position
  6630.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  6631.  0Ah    WORD    starting column of edit area
  6632.  0Ch    WORD    height of edit area
  6633.  0Eh    WORD    width of edit area
  6634.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  6635.  12h    WORD    number of rows displayable
  6636.  14h    BYTE    cursor column
  6637.  15h    BYTE    01h if buffer has been modified
  6638.  16h    BYTE    first displayable column (ticker fields only)
  6639.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  6640.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  6641.           area is high)
  6642.  1Ch    BYTE    currently marking?
  6643.  1Dh    BYTE    flag
  6644.  1Eh    WORD    offset of mark start
  6645.  20h    WORD    offset of mark end (inclusive)
  6646.  22h    WORD    displayable columns
  6647. --------b-60----DI0401-----------------------
  6648. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  6649.     DI = 0401h
  6650.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6651.         DWORD    pointer to edit record (see #1928)
  6652.         DWORD    pointer to string to edit
  6653.         WORD    initial length of string being edited
  6654.         WORD    maximum length of edited string
  6655.         DWORD    pointer to first line of prompt
  6656.         WORD    length of first line
  6657.         DWORD    pointer to second line of prompt
  6658.         WORD    length of second line
  6659. Return: ???
  6660.     STACK unchanged
  6661. --------b-60----DI0402-----------------------
  6662. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  6663.     DI = 0402h
  6664.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6665.         DWORD    pointer to edit record (see #1928)
  6666. Return: ???
  6667.     STACK unchanged
  6668. --------b-60----DI0403-----------------------
  6669. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  6670.     DI = 0403h
  6671.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6672.         DWORD    pointer to edit record (see #1928)
  6673.         WORD    keystroke
  6674.         DWORD    pointer to WORD buffer for result code
  6675. Return: result code buffer filled with 0001h if editing complete
  6676.     STACK unchanged
  6677. --------b-60----DI0404-----------------------
  6678. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  6679.     DI = 0404h
  6680.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6681.         DWORD    pointer to ???
  6682.         WORD    ???
  6683.         WORD    ???
  6684.         WORD    ???
  6685.         WORD    ???
  6686.         DWORD    pointer to ???
  6687.         WORD    ???
  6688.         WORD    ???
  6689.         WORD    ???
  6690.         DWORD    pointer to ???
  6691. Return: ???
  6692.     STACK unchanged
  6693. --------b-60----DI0405-----------------------
  6694. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  6695.     DI = 0405h
  6696.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6697.         DWORD    pointer to ???
  6698. Return: ???
  6699.     STACK unchanged
  6700. --------b-60----DI0406-----------------------
  6701. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  6702.     DI = 0406h
  6703.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6704.         DWORD    pointer to ???
  6705.         WORD    ???
  6706. Return: ???
  6707.     STACK unchanged
  6708. --------b-60----DI0407-----------------------
  6709. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  6710.     DI = 0407h
  6711.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6712.         DWORD    pointer to ???
  6713.         DWORD    pointer to ???
  6714. Return: ???
  6715.     STACK unchanged
  6716. --------b-60----DI0408-----------------------
  6717. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  6718.     DI = 0408h
  6719.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6720.         DWORD    pointer to ???
  6721. Return: ???
  6722.     STACK unchanged
  6723. --------b-60----DI0409-----------------------
  6724. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  6725.     DI = 0409h
  6726.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6727.         DWORD    pointer to ???
  6728. Return: ???
  6729.     STACK unchanged
  6730. --------b-60----DI040A-----------------------
  6731. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  6732.     DI = 040Ah
  6733.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6734.         DWORD    pointer to ???
  6735. Return: ???
  6736.     STACK unchanged
  6737. --------b-60----DI040B-----------------------
  6738. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  6739.     DI = 040Bh
  6740.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6741.         DWORD    pointer to ???
  6742.         DWORD    pointer to ???
  6743.         WORD    ???
  6744. Return: ???
  6745.     STACK unchanged
  6746. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6747. --------b-60----DI0500-----------------------
  6748. INT 60 u - HP 95LX System Manager - OPEN FILE
  6749.     DI = 0500h
  6750.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6751.         DWORD    pointer to file state record (see #1930)
  6752.         DWORD    pointer to filename
  6753.         WORD    length of filename
  6754.         WORD    ???
  6755.         WORD    suppress buffering if nonzero
  6756. Return: AX = status
  6757.     STACK unchanged
  6758. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  6759.  
  6760. Format of HP 95LX file state record:
  6761. Offset    Size    Description    (Table 1930)
  6762.  00h    WORD    DOS file handle
  6763.  02h    WORD    state flags (see #1931)
  6764.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  6765.  08h    DWORD    DOS file offset of start of buffer
  6766.  0Ch    DWORD    effective file offset as seen by caller
  6767.  10h    WORD    number of bytes in file buffer
  6768. ---buffered I/O only---
  6769.  12h 512 BYTEs    file buffer
  6770.  
  6771. Bitfields for HP 95LX file state flags:
  6772. Bit(s)    Description    (Table 1931)
  6773.  0    buffer contents valid
  6774.  1    buffer is dirty and must be written
  6775.  2    unbuffered I/O
  6776.  3    file is a character device
  6777. SeeAlso: #1930
  6778. --------b-60----DI0501-----------------------
  6779. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  6780.     DI = 0501h
  6781.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6782.         DWORD    pointer to file state record (see #1930)
  6783.         DWORD    pointer to filename
  6784.         WORD    length of filename
  6785.         WORD    ???
  6786.         WORD    suppress buffering if nonzero
  6787. Return: AX = status
  6788.     STACK unchanged
  6789. SeeAlso: INT 60/DI=0500h
  6790. --------b-60----DI0502-----------------------
  6791. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  6792.     DI = 0502h
  6793.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6794.         DWORD    pointer to file state record (see #1930)
  6795.         DWORD    pointer to filename
  6796.         WORD    length of filename
  6797.         WORD    ???
  6798.         WORD    suppress buffering if nonzero
  6799. Return: AX = status
  6800.     STACK unchanged
  6801. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  6802. --------b-60----DI0503-----------------------
  6803. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  6804.     DI = 0503h
  6805.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6806.         DWORD    pointer to file state record (see #1930)
  6807.         DWORD    pointer to filename
  6808.         WORD    length of filename
  6809.         WORD    ???
  6810.         WORD    suppress buffering if nonzero
  6811. Return: AX = status
  6812.     STACK unchanged
  6813. SeeAlso: INT 60/DI=0502h
  6814. --------b-60----DI0504-----------------------
  6815. INT 60 u - HP 95LX System Manager - READ FROM FILE
  6816.     DI = 0504h
  6817.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6818.         DWORD    pointer to file state record (see #1930)
  6819.         DWORD    pointer to data buffer
  6820.         WORD    number of bytes to read
  6821.         DWORD    pointer to WORD in which to return actual bytes read
  6822. Return: ???
  6823.     STACK unchanged
  6824. SeeAlso: INT 60/DI=0505h
  6825. --------b-60----DI0505-----------------------
  6826. INT 60 - HP 95LX System Manager - WRITE TO FILE
  6827.     DI = 0505h
  6828.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6829.         DWORD    pointer to file state record (see #1930)
  6830.         DWORD    pointer to data
  6831.         WORD    length of data
  6832. Return: AX = status
  6833.     STACK unchanged
  6834. SeeAlso: INT 60/DI=0504h
  6835. --------b-60----DI0506-----------------------
  6836. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  6837.     DI = 0506h
  6838.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6839.         DWORD    pointer to file state record (see #1930)
  6840.         2 WORDs    ???
  6841. Return: ???
  6842.     STACK unchanged
  6843. SeeAlso: INT 60/DI=0507h
  6844. --------b-60----DI0507-----------------------
  6845. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  6846.     DI = 0507h "M_TELL"
  6847.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6848.         DWORD    pointer to file state record (see #1930)
  6849.         DWORD    pointer to DWORD buffer for file position???
  6850. Return: ???
  6851.     STACK unchanged
  6852. SeeAlso: INT 60/DI=0506h
  6853. --------b-60----DI0508-----------------------
  6854. INT 60 u - HP 95LX System Manager - CLOSE FILE
  6855.     DI = 0508h
  6856.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6857.         DWORD    pointer to file state record (see #1930)
  6858. Return: ???
  6859.     STACK unchanged
  6860. SeeAlso: INT 60/DI=0500h
  6861. --------b-60----DI0509-----------------------
  6862. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  6863.     DI = 0509h
  6864.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6865.         DWORD    pointer to ???
  6866.         DWORD    pointer to ???
  6867.         WORD    ???
  6868.         WORD    ???
  6869. Return: ???
  6870.     STACK unchanged
  6871. --------b-60----DI050A-----------------------
  6872. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  6873.     DI = 050Ah
  6874.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6875.         DWORD    pointer to ??? (see #1932)
  6876.         DWORD    pointer to ???
  6877. Return: ???
  6878.     STACK unchanged
  6879.  
  6880. Format of HP 95LX pattern match control block:
  6881. Offset    Size    Description    (Table 1932)
  6882.  00h 43 BYTEs    FindFirst data block (see #0839 at INT 21/AH=4Eh)
  6883.  2Bh 80 BYTEs    full path name
  6884.  7Bh    BYTE    offset of last component of filename
  6885.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  6886. --------b-60----DI050B-----------------------
  6887. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  6888.     DI = 050Bh
  6889.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6890.         DWORD    pointer to ???
  6891.         WORD    ???
  6892.         WORD    ???
  6893.         DWORD    pointer to ???
  6894. Return: ??? = result (see #1933)
  6895.     ???
  6896.     STACK unchanged
  6897.  
  6898. (Table 1933)
  6899. Values returned by HP 95LX System Manager:
  6900.  0000h    nonexistent
  6901.  0001h    file
  6902.  0002h    directory
  6903.  0003h    character device
  6904. --------b-60----DI050C-----------------------
  6905. INT 60 u - HP 95LX System Manager - DELETE FILE
  6906.     DI = 050Ch "M_DELETE"
  6907.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6908.         DWORD    pointer to ???
  6909.         WORD    ???
  6910.         WORD    ???
  6911. Return: ???
  6912.     STACK unchanged
  6913. --------b-60----DI050D-----------------------
  6914. INT 60 u - HP 95LX System Manager - RENAME FILE
  6915.     DI = 050Dh
  6916.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6917.         DWORD    pointer to ???
  6918.         WORD    ???
  6919.         WORD    ???
  6920.         DWORD    pointer to ???
  6921.         WORD    ???
  6922.         WORD    ???
  6923. Return: ???
  6924.     STACK unchanged
  6925. --------b-60----DI050E-----------------------
  6926. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  6927.     DI = 050Eh
  6928.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6929.         WORD    ???
  6930.         DWORD    pointer to ???
  6931.         DWORD    pointer to ???
  6932. Return: ???
  6933.     STACK unchanged
  6934. --------b-60----DI050F-----------------------
  6935. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  6936.     DI = 050Fh
  6937.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6938.         DWORD    pointer to ???
  6939.         WORD    ???
  6940. Return: ???
  6941.     STACK unchanged
  6942. --------b-60----DI0510-----------------------
  6943. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  6944.     DI = 0510h
  6945.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6946.         DWORD    pointer to ???
  6947.         DWORD    pointer to ???
  6948. Return: ???
  6949.     STACK unchanged
  6950. --------b-60----DI0511-----------------------
  6951. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  6952.     DI = 0511h
  6953.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6954.         DWORD    pointer to ???
  6955.         WORD    ???
  6956.         WORD    ???
  6957. Return: ???
  6958.     STACK unchanged
  6959. SeeAlso: INT 21/AH=39h,INT 60/DI=0512h
  6960. --------b-60----DI0512-----------------------
  6961. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  6962.     DI = 0512h
  6963.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6964.         DWORD    pointer to ???
  6965.         WORD    ???
  6966.         WORD    ???
  6967. Return: ???
  6968.     STACK unchanged
  6969. SeeAlso: INT 21/AH=3Ah,INT 60/DI=0511h
  6970. --------b-60----DI0513-----------------------
  6971. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  6972.     DI = 0513h
  6973.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6974.         DWORD    pointer to ??? buffer for current drive
  6975. Return: ???
  6976.     STACK unchanged
  6977. SeeAlso: INT 21/AH=19h,INT 60/DI=0514h
  6978. --------b-60----DI0514-----------------------
  6979. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  6980.     DI = 0514h
  6981.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6982.         WORD    new drive
  6983. Return: ???
  6984.     STACK unchanged
  6985. SeeAlso: INT 21/AH=0Eh,INT 60/DI=0513h
  6986. --------b-60----DI0515-----------------------
  6987. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  6988.     DI = 0515h
  6989.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6990.         DWORD    pointer to ???
  6991.         DWORD    pointer to ???
  6992. Return: ???
  6993.     STACK unchanged
  6994. --------b-60----DI0516-----------------------
  6995. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  6996.     DI = 0516h
  6997.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6998.         DWORD    pointer to ???
  6999. Return: ???
  7000.     STACK unchanged
  7001. --------b-60----DI0517-----------------------
  7002. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  7003.     DI = 0517h
  7004.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7005.         DWORD    pointer to ???
  7006.         WORD    ???
  7007.         WORD    ???
  7008.         DWORD    pointer to ??? buffer for file's attributes???
  7009. Return: ???
  7010.     STACK unchanged
  7011. SeeAlso: INT 21/AX=4300h,INT 60/DI=0518h
  7012. --------b-60----DI0518-----------------------
  7013. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  7014.     DI = 0518h
  7015.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7016.         DWORD    pointer to ???
  7017.         WORD    ???
  7018.         WORD    ???
  7019.         WORD    new attributes???
  7020. Return: ???
  7021.     STACK unchanged
  7022. SeeAlso: INT 21/AX=4301h,INT 60/DI=0517h
  7023. --------b-60----DI0519-----------------------
  7024. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  7025.     DI = 0519h
  7026.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7027.         DWORD    pointer to ???
  7028.         DWORD    pointer to ???
  7029.         WORD    ???
  7030.         WORD    ???
  7031.         WORD    ???
  7032.         WORD    ???
  7033.         WORD    ???
  7034. Return: ???
  7035.     STACK unchanged
  7036. --------b-60----DI051A-----------------------
  7037. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  7038.     DI = 051Ah
  7039.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7040.         DWORD    pointer to ???
  7041.         DWORD    pointer to ???
  7042. Return: ???
  7043.     STACK unchanged
  7044. --------b-60----DI051B-----------------------
  7045. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  7046.     DI = 051Bh
  7047.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7048.         DWORD    pointer to ???
  7049.         DWORD    pointer to ???
  7050. Return: ???
  7051.     STACK unchanged
  7052. --------b-60----DI051C-----------------------
  7053. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  7054.     DI = 051Ch
  7055.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7056.         DWORD    pointer to ???
  7057.         WORD    ???
  7058. Return: ???
  7059.     STACK unchanged
  7060. --------b-60----DI0600-----------------------
  7061. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  7062.     DI = 0600h
  7063.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7064. Return: ???
  7065.     STACK unchanged
  7066. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  7067. --------b-60----DI0601-----------------------
  7068. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  7069.     DI = 0601h
  7070.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7071. Return: never
  7072.     STACK unchanged
  7073. SeeAlso: INT 21/AH=4Ch,INT 2F/AX=1122h,INT 60/DI=0600h
  7074. --------b-60----DI0602-----------------------
  7075. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  7076.     DI = 0602h
  7077.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7078. Return: ???
  7079.     STACK unchanged
  7080. SeeAlso: INT 15/AX=101Bh,INT 2F/AX=1681h,INT 60/DI=0603h
  7081. --------b-60----DI0603-----------------------
  7082. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  7083.     DI = 0603h
  7084.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7085. Return: ???
  7086.     STACK unchanged
  7087. SeeAlso: INT 15/AX=101Ch,INT 2F/AX=1682h,INT 60/DI=0602h
  7088. --------b-60----DI0604-----------------------
  7089. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  7090.     DI = 0604h
  7091.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7092.         DWORD    pointer to ???
  7093.         WORD    ???
  7094.         WORD    ???
  7095.         DWORD    pointer to ???
  7096. Return: ???
  7097.     STACK unchanged
  7098. SeeAlso: INT 21/AH=4Bh
  7099. --------b-60----DI0605-----------------------
  7100. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  7101.     DI = 0605h
  7102.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7103. Return: ???
  7104.     STACK unchanged
  7105. --------b-60----DI0606-----------------------
  7106. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  7107.     DI = 0606h
  7108.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7109. Return: ???
  7110.     STACK unchanged
  7111. SeeAlso: INT 14/AH=17h"FOSSIL",INT 19
  7112. --------b-60----DI0607-----------------------
  7113. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  7114.     DI = 0607h
  7115.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7116.         DWORD    pointer to ???
  7117.         WORD    ???
  7118.         DWORD    pointer to ???
  7119.         WORD    ???
  7120. Return: ???
  7121.     STACK unchanged
  7122. --------b-60----DI0608-----------------------
  7123. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  7124.     DI = 0608h
  7125.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7126.         DWORD    pointer to ???
  7127. Return: ???
  7128.     STACK unchanged
  7129. --------b-60----DI0609-----------------------
  7130. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  7131.     DI = 0609h
  7132.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7133.         DWORD    pointer to ???
  7134. Return: DX:AX -> ???
  7135.     STACK unchanged
  7136. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7137. --------b-60----DI0700-----------------------
  7138. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  7139.     DI = 0700h
  7140.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7141. Return: ??? = error code (see #1934)
  7142.     ???
  7143.     STACK unchanged
  7144. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  7145.  
  7146. (Table 1934)
  7147. Values for HP 95LX error code:
  7148.  0000h    successful
  7149.  FFF8h    transfer request out of bounds
  7150.  FFF9h    no such representation
  7151.  FFFAh    no representation open
  7152.  FFFBh    a representation is already open
  7153.  FFFCh    representation already exists
  7154.  FFFDh    heap allocation failure
  7155.  FFFEh    clipboard not open
  7156.  FFFFh    clipboard access denied
  7157. --------b-60----DI0701-----------------------
  7158. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  7159.     DI = 0701h
  7160.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7161. Return: ???
  7162.     STACK unchanged
  7163. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  7164. --------b-60----DI0702-----------------------
  7165. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  7166.     DI = 0702h
  7167.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7168.         DWORD    pointer to ???
  7169. Return: ???
  7170.     STACK unchanged
  7171. SeeAlso: INT 60/DI=0700h
  7172. --------b-60----DI0704-----------------------
  7173. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  7174.     DI = 0704h
  7175.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7176.         DWORD    pointer to ???
  7177. Return: ???
  7178.     STACK unchanged
  7179. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  7180. --------b-60----DI0705-----------------------
  7181. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  7182.     DI = 0705h
  7183.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7184. Return: ???
  7185.     STACK unchanged
  7186. SeeAlso: INT 60/DI=0704h
  7187. --------b-60----DI0706-----------------------
  7188. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  7189.     DI = 0706h
  7190.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7191.         WORD    ???
  7192.         DWORD    pointer to ???
  7193.         DWORD    pointer to ???
  7194. Return: ???
  7195.     STACK unchanged
  7196. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  7197. --------b-60----DI0707-----------------------
  7198. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  7199.     DI = 0707h
  7200.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7201.         DWORD    pointer to ???
  7202.         DWORD    pointer to ???
  7203.         DWORD    pointer to ???
  7204. Return: ???
  7205.     STACK unchanged
  7206. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  7207. --------b-60----DI0708-----------------------
  7208. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  7209.     DI = 0708h
  7210.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7211.         DWORD    pointer to data to be written???
  7212.         WORD    length of data???
  7213. Return: ???
  7214.     STACK unchanged
  7215. SeeAlso: INT 60/DI=0709h
  7216. --------b-60----DI0709-----------------------
  7217. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  7218.     DI = 0709h
  7219.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7220.         WORD    ???
  7221.         WORD    ???
  7222.         DWORD    pointer to buffer for data???
  7223.         WORD    length of buffer???
  7224. Return: ???
  7225.     STACK unchanged
  7226. SeeAlso: INT 60/DI=0708h
  7227. --------b-60----DI0800-----------------------
  7228. INT 60 u - HP 95LX System Manager - BEEP
  7229.     DI = 0800h
  7230.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7231. Return: ???
  7232.     STACK unchanged
  7233. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  7234. --------b-60----DI0801-----------------------
  7235. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  7236.     DI = 0801h
  7237.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7238. Return: ???
  7239.     STACK unchanged
  7240. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  7241. --------b-60----DI0802-----------------------
  7242. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  7243.     DI = 0802h
  7244.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7245.         WORD    pattern number (00h-06h)
  7246. Return: ???
  7247.     STACK unchanged
  7248. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  7249. --------b-60----DI0803-----------------------
  7250. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  7251.     DI = 0803h
  7252.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7253. Return: ???
  7254.     STACK unchanged
  7255. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  7256. --------b-60----DI0900-----------------------
  7257. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  7258.     DI = 0900h
  7259.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7260.         WORD    size of block in bytes
  7261. Return: AX -> memory block
  7262.     STACK unchanged
  7263. Note:    System Manager-compliant applications are always small-model (64K code,
  7264.       64K data)
  7265. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  7266. --------b-60----DI0902-----------------------
  7267. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  7268.     DI = 0902h
  7269.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7270.         WORD    offset of memory block???
  7271. Return: ???
  7272.     STACK unchanged
  7273. Note:    System Manager-compliant applications are always small-model (64K code,
  7274.       64K data)
  7275. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  7276. --------b-60----DI0903-----------------------
  7277. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  7278.     DI = 0903h
  7279.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7280.         WORD    size of block in bytes???
  7281. Return: AX -> memory block???
  7282.     STACK unchanged
  7283. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  7284. --------b-60----DI0904-----------------------
  7285. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  7286.     DI = 0904h
  7287.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7288.         WORD    segment of memory block???
  7289. Return: AX -> ???
  7290.     STACK unchanged
  7291. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  7292. --------b-60----DI0B00-----------------------
  7293. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  7294.     DI = 0B00h
  7295.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7296.         DWORD    pointer to ???
  7297. Return: ???
  7298.     STACK unchanged
  7299. --------b-60----DI0B01-----------------------
  7300. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  7301.     DI = 0B01h
  7302.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7303.         DWORD    pointer to ???
  7304. Return: ???
  7305.     STACK unchanged
  7306. --------b-60----DI0B02-----------------------
  7307. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  7308.     DI = 0B02h
  7309.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7310.         DWORD    pointer to ???
  7311. Return: ???
  7312.     STACK unchanged
  7313. --------b-60----DI0B03-----------------------
  7314. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  7315.     DI = 0B03h
  7316.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7317.         WORD    ???
  7318. Return: ???
  7319.     STACK unchanged
  7320. --------b-60----DI0B04-----------------------
  7321. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  7322.     DI = 0B04h
  7323.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7324.         DWORD    pointer to alarm record??? (see #1935)
  7325.         WORD    ???
  7326. Return: ???
  7327.     STACK unchanged
  7328.  
  7329. Format of HP 95LX alarm record:
  7330. Offset    Size    Description    (Table 1935)
  7331.  00h    BYTE    hour
  7332.  01h    BYTE    minute
  7333.  02h    BYTE    second
  7334.  03h    BYTE    unused padding
  7335.  04h    WORD    rescheduling interval, in seconds
  7336.  06h    BYTE    are seconds significant?
  7337.  07h    BYTE    alarm sound
  7338.  08h 40 BYTEs    message displayed when alarm activates
  7339.  30h    BYTE    task ID of owner
  7340.  31h    BYTE    application's own use for sub-class
  7341.  32h  4 BYTEs    application's own use for private data
  7342. --------b-60----DI0B05-----------------------
  7343. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  7344.     DI = 0B05h
  7345.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7346.         DWORD    pointer to ???
  7347. Return: ???
  7348.     STACK unchanged
  7349. --------b-60----DI0B06-----------------------
  7350. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  7351.     DI = 0B06h
  7352.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7353.         DWORD    pointer to ???
  7354.         DWORD    pointer to ???
  7355.         DWORD    pointer to ???
  7356. Return: ???
  7357.     STACK unchanged
  7358. --------b-60----DI0B07-----------------------
  7359. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  7360.     DI = 0B07h
  7361.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7362.         DWORD    pointer to ???
  7363. Return: ???
  7364.     STACK unchanged
  7365. --------b-60----DI0B08-----------------------
  7366. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  7367.     DI = 0B08h
  7368.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7369.         WORD    timestamp format (see #1936)
  7370.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  7371.         WORD    column
  7372. Return: ???
  7373.     STACK unchanged
  7374.  
  7375. Bitfields for HP 95LX timestamp format:
  7376. Bit(s)    Description    (Table 1936)
  7377.  1-0    timestamp components
  7378.     00 date only
  7379.     01 time only
  7380.     10 date and time
  7381.     11 day and date
  7382.  4    supply am/pm
  7383.  5    supply seconds
  7384.  6    show year
  7385.  7    four-digit year
  7386. --------b-60----DI0B09-----------------------
  7387. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  7388.     DI = 0B09h
  7389.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7390.         DWORD    pointer to ??? (see #1937)
  7391.         DWORD    pointer to ???
  7392. Return: ???
  7393.     STACK unchanged
  7394. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  7395.  
  7396. Format of HP 95LX system settings:
  7397. Offset    Size    Description    (Table 1937)
  7398.  00h    WORD    country code
  7399.  02h    WORD    speaker volume (00h-03h or FFh for off)
  7400.  04h    WORD    contrast level (00h-0Fh)
  7401.  06h    WORD    week start (00h Sunday, 01h Monday)
  7402.  08h    WORD    punctuation format (see #1938)
  7403.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  7404.  0Ch    WORD    current date format (see #1939)
  7405.  0Eh    WORD    current time format (see #1940)
  7406.  10h    WORD    collating sequence
  7407.         00h numbers first, 01h letters first, 02h ASCII
  7408.  12h 80 BYTEs    name of picture file
  7409.  62h 30 BYTEs    name
  7410.  80h 30 BYTEs    title
  7411.  9Eh 28 BYTEs    company name
  7412.  BAh    WORD    number of languages
  7413.  BCh  6 BYTEs    available languages
  7414.  C2h 66 BYTEs    language menu
  7415. 104h  2 BYTEs    ASCIZ date separator
  7416. 106h  2 BYTEs    ASCIZ time separator
  7417. 108h    BYTE    date order
  7418. 109h    BYTE    use 24 hour time?
  7419. 10Ah 16 BYTEs    currency string
  7420. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  7421. 11Ch    WORD    keyboard (see #1941)
  7422. 11Eh    WORD    printer baud rate
  7423.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  7424. 120h    WORD    printer driver code
  7425.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  7426. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  7427. 124h    WORD    system manager interrupt (60h by default)
  7428. 126h    WORD    code page (01h CP850, 02h CP437)
  7429. 128h    WORD    active exit key
  7430. 12Ah    WORD    active menu key
  7431. 12Ch    WORD    active CHAR key toggle
  7432. 12Eh  6 BYTEs    alarm
  7433.  
  7434. (Table 1938)
  7435. Values for HP 95LX punctuation format:
  7436.  code    decimal arg    thousands
  7437.  00h    .    ,    ,
  7438.  01h    ,    .    .
  7439.  02h    .    ;    ;
  7440.  03h    ,    ;    .
  7441.  04h    .    ,    " "
  7442.  05h    ,    .    " "
  7443.  06h    .    ;    " "
  7444.  07h    ,    ;    " "
  7445.  
  7446. (Table 1939)
  7447. Values for HP 95LX current date format:
  7448.  00h    dd-mmm-yy
  7449.  01h    dd-mmm
  7450.  02h    mmm-yy
  7451.  03h    mm/dd/yy
  7452.  04h    dd/mm/yy
  7453.  05h    dd.mm.yy
  7454.  06h    yy-mm-dd
  7455.  07h    mm/dd
  7456.  08h    dd/mm
  7457.  09h    dd.mm
  7458.  0Ah    mm-dd
  7459.  
  7460. (Table 1940)
  7461. Values for HP 95LX current time format:
  7462.  00h    HH:MM:SS am/pm
  7463.  01h    HH:MM am/pm
  7464.  02h    HH:MM:SS
  7465.  03h    HH.MM.SS
  7466.  04h    HH,MM,SS
  7467.  05h    HHhMMmSSs
  7468.  06h    HH:MM
  7469.  07h    HH.MM
  7470.  08h    HH,MM
  7471.  09h    HHhMMm
  7472.  
  7473. (Table 1941)
  7474. Values for HP 95LX keyboard layout:
  7475.  0001h    Belgium
  7476.  0002h    French Canadian
  7477.  0004h    Denmark
  7478.  0008h    Finland
  7479.  0010h    French
  7480.  0020h    Finland
  7481.  0040h    Italy
  7482.  0080h    Netherlands
  7483.  0100h    Norway
  7484.  0200h    Portugal
  7485.  0400h    Spain
  7486.  0800h    Sweden
  7487.  1000h    Swiss French
  7488.  2000h    Swiss German
  7489.  4000h    United Kingdom
  7490.  8000h    USA
  7491. --------b-60----DI0B0A-----------------------
  7492. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  7493.     DI = 0B0Ah
  7494.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7495.         DWORD    pointer to ???
  7496.         DWORD    pointer to ???
  7497. Return: ???
  7498.     STACK unchanged
  7499. SeeAlso: INT 60/DI=0B09h
  7500. --------b-60----DI0B0B-----------------------
  7501. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  7502.     DI = 0B0Bh
  7503.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7504.         DWORD    pointer to ???
  7505. Return: ???
  7506.     STACK unchanged
  7507. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  7508. --------b-60----DI0B0C-----------------------
  7509. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  7510.     DI = 0B0Ch
  7511.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7512.         DWORD    pointer to ???
  7513. Return: ???
  7514.     STACK unchanged
  7515. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  7516. --------b-60----DI0B0D-----------------------
  7517. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  7518.     DI = 0B0Dh
  7519.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7520.         DWORD    pointer to ???
  7521.         DWORD    pointer to ???
  7522.         DWORD    pointer to ???
  7523. Return: ???
  7524.     STACK unchanged
  7525. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  7526. --------b-60----DI0B0E-----------------------
  7527. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  7528.     DI = 0B0Eh
  7529.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7530.         WORD    ???
  7531.         WORD    ???
  7532.         WORD    ???
  7533.         DWORD    pointer to ???
  7534.         DWORD    pointer to ???
  7535. Return: DX:AX -> ???
  7536.     STACK unchanged
  7537. --------b-60----DI0B0F-----------------------
  7538. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  7539.     DI = 0B0Fh
  7540.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7541. Return: DX:AX -> system settings record (see #1937)
  7542.     STACK unchanged
  7543. SeeAlso: INT 60/DI=0B09h
  7544. --------b-60----DI0B10-----------------------
  7545. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  7546.     DI = 0B10h
  7547.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7548.         WORD    ???
  7549.         DWORD    pointer to ???
  7550.         DWORD    pointer to ???
  7551. Return: ???
  7552.     STACK unchanged
  7553. --------b-60----DI0B11-----------------------
  7554. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  7555.     DI = 0B11h
  7556.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7557.         WORD    ???
  7558.         DWORD    pointer to ???
  7559.         DWORD    pointer to ???
  7560. Return: ???
  7561.     STACK unchanged
  7562. --------b-60----DI0B12-----------------------
  7563. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  7564.     DI = 0B12h
  7565.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7566.         WORD    new parsing rule (see #1942)
  7567. Return: ???
  7568.     STACK unchanged
  7569. SeeAlso: INT 60/DI=0B13h
  7570.  
  7571. (Table 1942)
  7572. Values for HP 95LX date parsing rule:
  7573.  01h    day-month-year
  7574.  02h    month-day-year
  7575.  03h    year-month-day
  7576.  04h    "DMYO"
  7577.  05h    "MDYO"
  7578.  OR with 08h to get any year
  7579. --------b-60----DI0B13-----------------------
  7580. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  7581.     DI = 0B13h
  7582.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7583.         WORD    new parsing rule (see #1943)
  7584. Return: ???
  7585.     STACK unchanged
  7586. SeeAlso: INT 60/DI=0B12h
  7587.  
  7588. (Table 1943)
  7589. Values for HP 95LX time parsing rule:
  7590.  01h    HH:MM:SS (am/pm)
  7591.  02h    HH:MM:SS (24hr)
  7592.  03h    HHMM:SS (24hr)
  7593.  04h    HH:MM:SS.hh (24hr)
  7594.  05h    HH:MM (am/pm)
  7595.  06h    HH:MM (24hr)
  7596.  07h    HHMM (24hr)
  7597. --------b-60----DI0B14-----------------------
  7598. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  7599.     DI = 0B14h
  7600.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7601. Return: ???
  7602.     STACK unchanged
  7603. --------b-60----DI0B15-----------------------
  7604. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  7605.     DI = 0B15h
  7606.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7607.         WORD    ???
  7608. Return: ???
  7609.     STACK unchanged
  7610. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7611. --------b-60----DI0C00-----------------------
  7612. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  7613.     DI = 0C00h
  7614.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7615. Return: ???
  7616.     STACK unchanged
  7617. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  7618. --------b-60----DI0C01-----------------------
  7619. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  7620.     DI = 0C01h
  7621.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7622. Return: ???
  7623.     STACK unchanged
  7624. Note:    relinquishes control of printer
  7625. SeeAlso: INT 60/DI=0C00h
  7626. --------b-60----DI0C02-----------------------
  7627. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  7628.     DI = 0C02h
  7629.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7630.         DWORD    pointer to data to be written
  7631.         WORD    length of data
  7632. Return: ???
  7633.     STACK unchanged
  7634. SeeAlso: INT 60/DI=0C00h
  7635. --------b-60----DI0C03-----------------------
  7636. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  7637.     DI = 0C03h
  7638.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7639. Return: ???
  7640.     STACK unchanged
  7641. SeeAlso: INT 60/DI=0C00h
  7642. --------b-60----DI0C04-----------------------
  7643. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  7644.     DI = 0C04h
  7645.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7646.         WORD    ???
  7647.         DWORD    pointer to ???
  7648. Return: ???
  7649.     STACK unchanged
  7650. --------b-60----DI0C05-----------------------
  7651. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  7652.     DI = 0C05h
  7653.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7654.         WORD    ???
  7655.         DWORD    pointer to ???
  7656. Return: ???
  7657.     STACK unchanged
  7658. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7659. --------b-60----DI0E00-----------------------
  7660. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  7661.     DI = 0E00h
  7662.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7663.         DWORD    pointer to ???
  7664. Return: ???
  7665.     STACK unchanged
  7666. SeeAlso: #1944,INT 60/DI=0E01h,INT 60/DI=0E02h
  7667.  
  7668. (Table 1944)
  7669. Values for HP 95LX error code:
  7670.  0000h    successful
  7671.  FFF1h    "E_BUSY"
  7672.  FFF2h    timeout
  7673.  FFF3h    framing error
  7674.  FFF4h    parity error
  7675.  FFF5h    overrun error
  7676.  FFF6h    "E_EMPTY"
  7677.  FFF7h    "E_CONECT"
  7678.  FFF8h    not open
  7679.  FFF9h    out of memory
  7680.  FFFAh    buffer overflow
  7681.  FFFBh    "E_NOFIT"
  7682.  FFFCh    unsupported
  7683.  FFFDh    "E_IVOPR"
  7684.  FFFEh    "E_IVCHN"
  7685.  FFFFh    "E_REOPEN"
  7686. --------b-60----DI0E01-----------------------
  7687. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  7688.     DI = 0E01h
  7689.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7690.         DWORD    pointer to WORD buffer for comm channel handle
  7691.         WORD    communications line number (01h-04h)
  7692. Return: ???
  7693.     STACK unchanged
  7694. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  7695. --------b-60----DI0E02-----------------------
  7696. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  7697.     DI = 0E02h
  7698.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7699.         WORD    comm channel handle
  7700. Return: ???
  7701.     STACK unchanged
  7702. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  7703. --------b-60----DI0E03-----------------------
  7704. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  7705.     DI = 0E03h
  7706.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7707.         WORD    ???
  7708. Return: ???
  7709.     STACK unchanged
  7710. --------b-60----DI0E04-----------------------
  7711. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  7712.     DI = 0E04h
  7713.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7714.         WORD    ???
  7715.         WORD    ???
  7716. Return: ???
  7717.     STACK unchanged
  7718. --------b-60----DI0E05-----------------------
  7719. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  7720.     DI = 0E05h
  7721.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7722.         WORD    ???
  7723.         DWORD    pointer to ???
  7724. Return: ???
  7725.     STACK unchanged
  7726. --------b-60----DI0E06-----------------------
  7727. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  7728.     DI = 0E06h
  7729.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7730.         WORD    comm channel handle
  7731.         WORD    reset options (see #1945)
  7732. Return: ???
  7733.     STACK unchanged
  7734.  
  7735. Bitfields for HP 95LX reset options:
  7736. Bit(s)    Description    (Table 1945)
  7737.  0    reset line
  7738.  1    flush transmit buffer
  7739.  2    flush receive buffer
  7740.  3    reset modem
  7741.  4    reset receiver's ^S state
  7742.  5    reset transmitter's ^S state
  7743. --------b-60----DI0E07-----------------------
  7744. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  7745.     DI = 0E07h
  7746.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7747.         WORD    ???
  7748. Return: ???
  7749.     STACK unchanged
  7750. --------b-60----DI0E08-----------------------
  7751. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  7752.     DI = 0E08h
  7753.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7754.         WORD    comm channel handle
  7755.         DWORD    pointer to data to be sent
  7756.         WORD    option flags
  7757.             bit 0: send partial buffer
  7758.             bit 1: turn on receiver after sending
  7759.         DWORD    pointer to WORD containing length of data to be sent
  7760. Return: length WORD updated to contain number of bytes actually sent???
  7761.     STACK unchanged
  7762. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  7763. --------b-60----DI0E09-----------------------
  7764. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  7765.     DI = 0E09h
  7766.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7767.         WORD    ???
  7768.         DWORD    pointer to ??? WORD
  7769.         DWORD    pointer to ??? WORD
  7770. Return: ???
  7771.     STACK unchanged
  7772. SeeAlso: INT 60/DI=0E0Ah
  7773. --------b-60----DI0E0A-----------------------
  7774. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  7775.     DI = 0E0Ah
  7776.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7777.         WORD    comm channel handle
  7778.         DWORD    pointer to WORD to get receive buffer size
  7779.         DWORD    pointer to WORD to get free bytes in receive buffer
  7780. Return: ???
  7781.     STACK unchanged
  7782. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  7783. --------b-60----DI0E0B-----------------------
  7784. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  7785.     DI = 0E0Bh
  7786.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7787.         WORD    comm channel handle
  7788.         DWORD    pointer to data buffer
  7789.         DWORD    pointer to WORD (call) length of data buffer
  7790.                     (ret) number of bytes received
  7791. Return: ???
  7792.     STACK unchanged
  7793. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  7794. --------b-60----DI0E0C-----------------------
  7795. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  7796.     DI = 0E0Ch
  7797.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7798.         WORD    ???
  7799.         DWORD    pointer to ???
  7800.         WORD    ???
  7801. Return: ???
  7802.     STACK unchanged
  7803. --------b-60----DI0E0D-----------------------
  7804. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  7805.     DI = 0E0Dh
  7806.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7807.         WORD    ???
  7808.         DWORD    pointer to ???
  7809.         WORD    ???
  7810. Return: ???
  7811.     STACK unchanged
  7812. --------b-60----DI0E0E-----------------------
  7813. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  7814.     DI = 0E0Eh
  7815.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7816.         WORD    ???
  7817.         WORD    ???
  7818. Return: ???
  7819.     STACK unchanged
  7820. --------b-60----DI0E0F-----------------------
  7821. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  7822.     DI = 0E0Fh
  7823.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7824.         WORD    ???
  7825. Return: ???
  7826.     STACK unchanged
  7827. --------b-60----DI0E10-----------------------
  7828. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  7829.     DI = 0E10h
  7830.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7831.         WORD    ???
  7832. Return: ???
  7833.     STACK unchanged
  7834. --------b-60----DI0E11-----------------------
  7835. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  7836.     DI = 0E11h
  7837.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7838.         WORD    ???
  7839.         WORD    ???
  7840. Return: ???
  7841.     STACK unchanged
  7842. --------b-60----DI0E12-----------------------
  7843. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  7844.     DI = 0E12h
  7845.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7846.         WORD    ???
  7847. Return: ???
  7848.     STACK unchanged
  7849. --------b-60----DI0E13-----------------------
  7850. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  7851.     DI = 0E13h
  7852.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7853.         WORD    ???
  7854. Return: ???
  7855.     STACK unchanged
  7856. --------b-60----DI0E14-----------------------
  7857. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  7858.     DI = 0E14h
  7859.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7860.         WORD    comm channel handle
  7861.         DWORD    pointer to communications settings (see #1946)
  7862. Return: ???
  7863.     STACK unchanged
  7864. SeeAlso: INT 60/DI=0E15h
  7865.  
  7866. Format of HP 95LX communications settings:
  7867. Offset    Size    Description    (Table 1946)
  7868.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  7869.  01h    WORD    baud rate divisor (115200/baud_rate)
  7870.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  7871.  04h    BYTE    stop bits (00h one, 04h two)
  7872.  05h    BYTE    data bits - 5
  7873.  06h    BYTE    software handshake
  7874.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  7875.  07h    BYTE    infrared (01h off, 02h on)
  7876.  08h    BYTE    duplex (01h half, 02h full)
  7877.  09h    BYTE    echo (01h echo, 02h no echo)
  7878. --------b-60----DI0E15-----------------------
  7879. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  7880.     DI = 0E15h
  7881.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7882.         WORD    ???
  7883.         DWORD    pointer to buffer for settings (see #1946)
  7884. Return: ???
  7885.     STACK unchanged
  7886. SeeAlso: INT 60/DI=0E14h
  7887. --------b-60----DI0E16-----------------------
  7888. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  7889.     DI = 0E16h
  7890.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7891.         WORD    ???
  7892.         WORD    ???
  7893.         WORD    ???
  7894.         WORD    ???
  7895.         WORD    ???
  7896. Return: ???
  7897.     STACK unchanged
  7898. --------b-60----DI0E17-----------------------
  7899. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  7900.     DI = 0E17h
  7901.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7902.         WORD    ???
  7903. Return: ???
  7904.     STACK unchanged
  7905. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7906. --------b-60----DI0F00-----------------------
  7907. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  7908.     DI = 0F00h
  7909.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7910.         WORD    ???
  7911.         DWORD    pointer to ???
  7912.         WORD    ???
  7913.         DWORD    pointer to ???
  7914. Return: ???
  7915.     STACK unchanged
  7916. --------b-60----DI0F01-----------------------
  7917. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  7918.     DI = 0F01h
  7919.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7920.         DWORD    pointer to ASCIZ title string
  7921. Return: ???
  7922.     STACK unchanged
  7923. --------b-60----DI0F02-----------------------
  7924. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  7925.     DI = 0F02h
  7926.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7927.         DWORD    pointer to ???
  7928. Return: ???
  7929.     STACK unchanged
  7930. --------b-60----DI0F03-----------------------
  7931. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  7932.     DI = 0F03h
  7933.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7934.         DWORD    pointer to first line of message
  7935.         WORD    length of first line
  7936.         DWORD    pointer to second line of message
  7937.         WORD    length of second line
  7938. Return: ???
  7939.     STACK unchanged
  7940. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  7941. --------b-60----DI0F04-----------------------
  7942. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  7943.     DI = 0F04h
  7944.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7945. Return: ???
  7946.     STACK unchanged
  7947. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  7948. --------b-60----DI0F05-----------------------
  7949. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  7950.     DI = 0F05h
  7951.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7952. Return: DX:AX -> ???
  7953.     STACK unchanged
  7954. --------b-60----DI0F06-----------------------
  7955. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  7956.     DI = 0F06h
  7957.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7958. Return: DX:AX -> ???
  7959.     STACK unchanged
  7960. --------b-60----DI0F07-----------------------
  7961. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  7962.     DI = 0F07h
  7963.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7964. Return: DX:AX -> ???
  7965.     STACK unchanged
  7966. --------b-60----DI0F08-----------------------
  7967. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  7968.     DI = 0F08h
  7969.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7970.         ???
  7971. Return: ???
  7972.     STACK unchanged
  7973. --------b-60----DI0F09-----------------------
  7974. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  7975.     DI = 0F09h
  7976.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7977.         DWORD    pointer to first line of message
  7978.         WORD    length of first line
  7979.         DWORD    pointer to second line of message
  7980.         WORD    length of second line
  7981.         DWORD    pointer to third line of message
  7982.         WORD    length of third line
  7983. Return: ???
  7984.     STACK unchanged
  7985. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  7986. --------b-60----DI0F0A-----------------------
  7987. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  7988.     DI = 0F0Ah
  7989.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7990. Return: ???
  7991.     STACK unchanged
  7992. SeeAlso: INT 60/DI=0F0Bh
  7993. --------b-60----DI0F0B-----------------------
  7994. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  7995.     DI = 0F0Bh
  7996.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7997. Return: ???
  7998.     STACK unchanged
  7999. SeeAlso: INT 60/DI=0F0Ah
  8000. --------b-60----DI0F0C-----------------------
  8001. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  8002.     DI = 0F0Ch
  8003.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8004.         ???
  8005. Return: ???
  8006.     STACK unchanged
  8007. --------b-60----DI0F0D-----------------------
  8008. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  8009.     DI = 0F0Dh
  8010.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8011.         DWORD    pointer to ???
  8012. Return: DX:AX -> ???
  8013.     STACK unchanged
  8014. --------b-60----DI0F0E-----------------------
  8015. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  8016.     DI = 0F0Eh
  8017.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8018.         DWORD    pointer to ???
  8019. Return: DX:AX -> ???
  8020.     STACK unchanged
  8021. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  8022. --------b-60----DI1005-----------------------
  8023. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  8024.     DI = 1005h
  8025.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8026. Return: ???
  8027.     STACK unchanged
  8028. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  8029. --------b-60----DI1200-----------------------
  8030. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  8031.     DI = 1200h
  8032.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8033.         DWORD    pointer to ???
  8034. Return: ???
  8035.     STACK unchanged
  8036. --------b-60----DI1201-----------------------
  8037. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  8038.     DI = 1201h
  8039.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8040.         WORD    ???
  8041. Return: DX:AX -> ???
  8042.     STACK unchanged
  8043. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  8044. --------b-60----DI1202-----------------------
  8045. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  8046.     DI = 1202h
  8047.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8048. Return: DX:AX -> ???
  8049.     STACK unchanged
  8050. --------b-60----DI1203-----------------------
  8051. INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
  8052.     DI = 1203h
  8053.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8054. Return: ???
  8055.     STACK unchanged
  8056. --------b-60----DI1300-----------------------
  8057. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  8058.     DI = 1300h
  8059.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8060.         DWORD    pointer to ???
  8061.         DWORD    pointer to ???
  8062.         WORD    ???
  8063. Return: ???
  8064.     STACK unchanged
  8065. --------b-60----DI1301-----------------------
  8066. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  8067.     DI = 1301h
  8068.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8069.         DWORD    pointer to ???
  8070. Return: ???
  8071.     STACK unchanged
  8072. --------b-60----DI1302-----------------------
  8073. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  8074.     DI = 1302h
  8075.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8076.         DWORD    pointer to ???
  8077.         WORD    ???
  8078. Return: ???
  8079.     STACK unchanged
  8080. --------b-60----DI1303-----------------------
  8081. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  8082.     DI = 1303h
  8083.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8084.         DWORD    pointer to ???
  8085. Return: ???
  8086.     STACK unchanged
  8087. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  8088. --------b-60----DI1400-----------------------
  8089. INT 60 u - HP 95LX System Manager - "M_ColInit"
  8090.     DI = 1400h
  8091.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8092. Return: AX = ???
  8093.     STACK unchanged
  8094. --------b-60----DI1401-----------------------
  8095. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  8096.     DI = 1401h
  8097.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8098.         DWORD    pointer to ???
  8099.         WORD    ???
  8100.         DWORD    pointer to ???
  8101.         WORD    ???
  8102. Return: ???
  8103.     STACK unchanged
  8104. --------b-60----DI1402-----------------------
  8105. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  8106.     DI = 1402h
  8107.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8108.         ???
  8109. Return: ???
  8110.     STACK unchanged
  8111. --------b-60----DI1403-----------------------
  8112. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  8113.     DI = 1403h
  8114.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8115.         ???
  8116. Return: ???
  8117.     STACK unchanged
  8118. --------b-60----DI1404-----------------------
  8119. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  8120.     DI = 1404h
  8121.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8122.         DWORD    pointer to ???
  8123.         WORD    ???
  8124. Return: ???
  8125.     STACK unchanged
  8126. --------b-60----DI1405-----------------------
  8127. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  8128.     DI = 1405h
  8129.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8130.         DWORD    pointer to ???
  8131.         WORD    ???
  8132.         DWORD    pointer to ???
  8133.         WORD    ???
  8134.         WORD    ???
  8135. Return: ???
  8136.     STACK unchanged
  8137. --------b-60----DI1406-----------------------
  8138. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  8139.     DI = 1406h
  8140.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8141.         DWORD    pointer to ???
  8142.         WORD    ???
  8143. Return: ???
  8144.     STACK unchanged
  8145. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  8146. --------b-60----DI1500-----------------------
  8147. INT 60 u - HP 95LX System Manager - "GrDispInit"
  8148.     DI = 1500h
  8149.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8150.         ???
  8151. Return: ???
  8152.     STACK unchanged
  8153. --------b-60----DI1501-----------------------
  8154. INT 60 u - HP 95LX System Manager - "GrDispClear"
  8155.     DI = 1501h
  8156.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8157.         ???
  8158. Return: ???
  8159.     STACK unchanged
  8160. --------b-60----DI1502-----------------------
  8161. INT 60 u - HP 95LX System Manager - "GrDispDot"
  8162.     DI = 1502h
  8163.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8164.         ???
  8165. Return: ???
  8166.     STACK unchanged
  8167. --------b-60----DI1503-----------------------
  8168. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  8169.     DI = 1503h
  8170.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8171.         ???
  8172. Return: ???
  8173.     STACK unchanged
  8174. --------b-60----DI1504-----------------------
  8175. INT 60 u - HP 95LX System Manager - "GrDispFill"
  8176.     DI = 1504h
  8177.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8178.         ???
  8179. Return: ???
  8180.     STACK unchanged
  8181. --------b-60----DI1505-----------------------
  8182. INT 60 u - HP 95LX System Manager - "GrDispRead"
  8183.     DI = 1505h
  8184.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8185.         ???
  8186. Return: ???
  8187.     STACK unchanged
  8188. --------b-60----DI1506-----------------------
  8189. INT 60 u - HP 95LX System Manager - "GrDispString"
  8190.     DI = 1506h
  8191.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8192.         ???
  8193. Return: ???
  8194.     STACK unchanged
  8195. --------b-60----DI1507-----------------------
  8196. INT 60 u - HP 95LX System Manager - "GrDispPan"
  8197.     DI = 1507h
  8198.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8199.         ???
  8200. Return: ???
  8201.     STACK unchanged
  8202. --------b-60----DI1508-----------------------
  8203. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  8204.     DI = 1508h
  8205.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8206.         ???
  8207. Return: ???
  8208.     STACK unchanged
  8209. --------b-60----DI1509-----------------------
  8210. INT 60 u - HP 95LX System Manager - "GrDispSave"
  8211.     DI = 1509h
  8212.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8213.         ???
  8214. Return: ???
  8215.     STACK unchanged
  8216. --------b-60----DI150A-----------------------
  8217. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  8218.     DI = 150Ah
  8219.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8220.         ???
  8221. Return: ???
  8222.     STACK unchanged
  8223. --------b-60----DI150B-----------------------
  8224. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  8225.     DI = 150Bh
  8226.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8227.         ???
  8228. Return: ???
  8229.     STACK unchanged
  8230. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  8231. --------b-60----DI1604-----------------------
  8232. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  8233.     DI = 1604h
  8234.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  8235.         ???
  8236. Return: ???
  8237.     STACK unchanged
  8238. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  8239. --------G-6000-------------------------------
  8240. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  8241.     AH = 00h
  8242. Return: AX = 0000h    profiling is off
  8243.         otherwise profiling is on
  8244. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  8245.       Issue 47
  8246. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  8247. --------G-6000-------------------------------
  8248. INT 60 - MDEBUG - GET STATUS
  8249.     AH = 00h
  8250.     DS:SI -> password or a null byte
  8251. Return: AX = return code
  8252.         FFFEh password is invalid
  8253.         FFFDh display mode is invalid
  8254.         else successful
  8255.         ES = value of the monitor register SE
  8256.         DI = value of the monitor register OF
  8257.         CH = monitor color
  8258.         CL = interpreter color
  8259.         BH = monitor start line
  8260.         BL = interpreter start line
  8261.         AH = makecode of the hotkey
  8262.         AL = ASCII code of the hotkey
  8263.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  8264.               hotkey (coded as for the keyboard flag at 0040h:0017h)
  8265.         DH = basic process number for the communication with drivers
  8266.               process number for the display driver, DH+1 = process
  8267.               number for the command driver(s)
  8268.     DS:SI -> MDEBUG identification table (see #1947)
  8269. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  8270.       Schemmer, including a memory monitor, an interpreter, and a
  8271.       disassembler
  8272. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  8273.       through INT 67; the interrupt handler is preceded by the signature
  8274.       "USERINT" and is not chained
  8275.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  8276.       passwords are active; enough stack space must be provided for an
  8277.       INT 10h call (which MDEBUG uses while prompting for the password)
  8278. SeeAlso: AH=02h"MDEBUG"
  8279. Index:    hotkeys;MDEBUG
  8280.  
  8281. Format of MDEBUG identification table:
  8282. Offset    Size    Description    (Table 1947)
  8283.  -2    WORD    entry offset
  8284.  00h    WORD    CS of MDEBUG
  8285.  02h    DWORD    old INT 08h vector
  8286.  06h    DWORD    old INT 09h vector
  8287.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  8288.  0Eh    BYTE    length of version string
  8289.  0Fh  N BYTEs    version string
  8290. --------N-600000-----------------------------
  8291. INT 60 - RIFS - CLIENT - INSTALLATION CHECK
  8292.     AX = 0000h
  8293. Return: AX = 1234h if installed
  8294.     CF clear
  8295. Program: RIFS is the Remote Installable File System by "kyle"
  8296. Range:    INT 60 to INT 66 and INT 18,selected by scanning for 0000h:0000h vector
  8297. Note:    the installation check consists of testing for the signature "RIFS"
  8298.       immediately preceding the interrupt handler
  8299. SeeAlso: AX=0001h,AX=0005h,AX=0007h,AX=0008h,INT 2F/AX=56000h
  8300. --------N-600001-----------------------------
  8301. INT 60 - RIFS - CLIENT - UNINSTALL
  8302.     AX = 0001h
  8303. Return: CF clear if successful
  8304. SeeAlso: AX=0000h,AX=0009h
  8305. --------N-600002-----------------------------
  8306. INT 60 - RIFS - CLIENT - REMAP DRIVE
  8307.     AX = 0002h
  8308.     BH = local drive number
  8309.     BL = remote drive number
  8310. Return: CF clear if successful
  8311.     CF set on error
  8312. SeeAlso: AX=0000h,AX=0003h,AX=0004h,INT 21/AX=5F03h,INT 21/AX=5F05h"STARLITE"
  8313. --------N-600003-----------------------------
  8314. INT 60 - RIFS - CLIENT - UNMAP DRIVE
  8315.     AX = 0003h
  8316.     BL = drive to unmap
  8317. Return: CF clear if successful
  8318.     CF set on error
  8319. SeeAlso: AX=0000h,AX=0002h,AX=0004h,INT 21/AX=5F04h,INT 21/AX=5F06h"STARLITE"
  8320. --------N-600004-----------------------------
  8321. INT 60 - RIFS - CLIENT - UNMAP ALL DRIVES
  8322.     AX = 0004h
  8323. Return: CF clear if successful
  8324.     CF set on error
  8325. SeeAlso: AX=0000h,AX=0002h,AX=0003h
  8326. --------N-600005-----------------------------
  8327. INT 60 - RIFS - CLIENT - GET TRANSLATION TABLE
  8328.     AX = 0005h
  8329. Return: CF clear if successful
  8330.         ES:BX -> translation table
  8331.     CF set on error
  8332. SeeAlso: AX=0000h,AX=0006h,AX=0007h
  8333. --------N-600006-----------------------------
  8334. INT 60 - RIFS - CLIENT - GET STATISTICS TABLE
  8335.     AX = 0006h
  8336. Return: CF clear if successful
  8337.         ES:BX -> statistics table
  8338.     CF set on error
  8339. SeeAlso: AX=0000h,AX=0005h,AX=0007h,AX=000Ah
  8340. --------N-600007-----------------------------
  8341. INT 60 - RIFS - CLIENT - GET PORT TRANSLATION TABLE
  8342.     AX = 0007h
  8343. Return: CF clear if successful
  8344.         CX = number of entries
  8345.         ES:BX -> port mapping table
  8346.     CF set on error
  8347. SeeAlso: AX=0000h,AX=0005h
  8348. --------N-600008-----------------------------
  8349. INT 60 - RIFS - SERVER - INSTALLATION CHECK
  8350.     AX = 0008h
  8351. Return: CF clear if successful
  8352.     CF set on error
  8353. Range:    INT 60 to INT 66 and INT 18,selected by scanning for 0000h:0000h vector
  8354. Note:    the installation check consists of testing for the signature "RIFS"
  8355.       immediately preceding the interrupt handler
  8356. SeeAlso: AX=0000h,AX=0009h,AX=000Ah,AX=000Bh
  8357. --------N-600009-----------------------------
  8358. INT 60 - RIFS - SERVER - UNINSTALL
  8359.     AX = 0009h
  8360. Return: CF clear if successful
  8361.     CF set on error
  8362. SeeAlso: AX=0001h,AX=0008h
  8363. --------N-60000A-----------------------------
  8364. INT 60 - RIFS - SERVER - GET STATISTICS TABLE
  8365.     AX = 000Ah
  8366. Return: CF clear if successful
  8367.         ES:BX -> statistics table
  8368.     CF set on error
  8369. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Bh
  8370. --------N-60000B-----------------------------
  8371. INT 60 - RIFS - SERVER - RESET
  8372.     AX = 000Bh
  8373. Return: CF clear if successful
  8374.     CF set on error
  8375. Note:    closes all open files
  8376. SeeAlso: AX=0008h,AX=0009h
  8377. --------G-6001-------------------------------
  8378. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  8379.     AH = 01h
  8380.     DS:SI -> password or a null byte
  8381. Return: AX = return code
  8382.         FFFEh password is invalid
  8383.         FFFDh display mode is invalid
  8384.         else successful
  8385.         ES:DI point to the help registers of MDEBUG
  8386.            ES:DI-02h  -> R0 (WORD)
  8387.            ES:DI      -> R1 (WORD)
  8388.            ES:DI+02h  -> R2 (WORD)
  8389.            ES:DI+04h  -> R3 (WORD)
  8390.            ...
  8391.            ES:DI+0Eh  -> R8 (WORD)
  8392. --------G-6001-------------------------------
  8393. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  8394.     AH = 01h
  8395. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  8396.       Issue 47
  8397. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  8398. --------N-6001FF-----------------------------
  8399. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  8400.     AX = 01FFh
  8401.     BX = handle returned by function 02h
  8402. Return: CF set on error
  8403.         DH = error code (see #1948)
  8404.     CF clear if successful
  8405.         BX = version
  8406.         CH = network interface class (see #1949)
  8407.         DX = interface type (see #1949)
  8408.         CL = number
  8409.         DS:SI -> name
  8410.         AL = driver functions supported
  8411.         01h basic
  8412.         02h basic and extended
  8413.         05h basic and high-performance
  8414.         06h basic, high-performance, and extended
  8415.         FFh not installed
  8416. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  8417.       the packet driver specification
  8418.  
  8419. (Table 1948)
  8420. Values for Packet Driver error code:
  8421.  01h "BAD_HANDLE"    invalid handle number
  8422.  02h "NO_CLASS"        no interfaces of the specified class found
  8423.  03h "NO_TYPE"        no interfaces of the specified type found
  8424.  04h "NO_NUMBER"    no interfaces of the specified number found
  8425.  05h "BAD_TYPE"        bad packet type
  8426.  06h "NO_MULTICAST"    interface does not support multicast messages
  8427.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  8428.  08h "BAD_MODE"        invalid receiver mode
  8429.  09h "NO_SPACE"        insufficient space
  8430.  0Ah "TYPE_INUSE"    type accessed but never released
  8431.  0Bh "BAD_COMMAND"    bad command
  8432.  0Ch "CANT_SEND"    packet could not be sent
  8433.  0Dh "CANT_SET"        hardware address could not be changed
  8434.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  8435.  0Fh "CANT_RESET"    could not reset interface
  8436.  
  8437. (Table 1949)
  8438. Values for Packet Driver network interface classes/types:
  8439.     Class 01h  Ethernet/IEEE 802.3
  8440.     01h 3COM 3C500/3C501
  8441.     02h 3COM 3C505
  8442.     03h MICOM-Interlan NI5010
  8443.     04h BICC Data Networks 4110
  8444.     05h BICC Data Networks 4117
  8445.     06h MICOM-Interlan NP600
  8446.     08h Ungermann-Bass PC-NIC
  8447.     09h Univation NC-516
  8448.     0Ah TRW PC-2000
  8449.     0Bh MICOM-Interlan NI5210
  8450.     0Ch 3COM 3C503
  8451.     0Dh 3COM 3C523
  8452.     0Eh Western Digital WD8003
  8453.     0Fh Spider Systems S4
  8454.     10h Torus Frame Level
  8455.     11h 10Net Communications
  8456.     12h Gateway PC-bus
  8457.     13h Gateway AT-bus
  8458.     14h Gateway MCA-bus
  8459.     15h IMC PCnic
  8460.     16h IMC PCnic II
  8461.     17h IMC PCnic 8-bit
  8462.     18h Tigan Communications
  8463.     19h Micromatic Research
  8464.     1Ah Clarkson "Multiplexor"
  8465.     1Bh D-Link 8-bit
  8466.     1Ch D-Link 16-bit
  8467.     1Dh D-Link PS/2
  8468.     1Eh Research Machines 8
  8469.     1Fh Research Machines 16
  8470.     20h Research Machines MCA
  8471.     21h Radix Microsystems EXM1 16-bit
  8472.     22h Interlan Ni9210
  8473.     23h Interlan Ni6510
  8474.     24h Vestra LANMASTER 16-bit
  8475.     25h Vestra LANMASTER 8-bit
  8476.     26h Allied Telesis PC/XT/AT
  8477.     27h Allied Telesis NEC PC-98
  8478.     28h Allied Telesis Fujitsu FMR
  8479.     29h Ungermann-Bass NIC/PS2
  8480.     2Ah Tiara LANCard/E AT
  8481.     2Bh Tiara LANCard/E MC
  8482.     2Ch Tiara LANCard/E TP
  8483.     2Dh Spider Communications SpiderComm 8
  8484.     2Eh Spider Communications SpiderComm 16
  8485.     2Fh AT&T Starlan NAU
  8486.     30h AT&T Starlan-10 NAU
  8487.     31h AT&T Ethernet NAU
  8488.     32h Intel smart card
  8489.     33h Xircom Packet Adapter
  8490.     34h Aquila Ethernet
  8491.     35h Novell NE1000
  8492.     36h Novell NE2000
  8493.     37h SMC PC-510
  8494.     38h AT&T Fiber NAU
  8495.     39h NDIS to Packet Driver adapter
  8496.     3Ah Racal-InterLan ES3210
  8497.     3Bh General Systems ISDN simulated Ethernet
  8498.     3Ch Hewlett-Packard
  8499.     3Dh IMC EtherNic-8
  8500.     3Eh IMC EtherNic-16
  8501.     3Fh IMC EtherNic-MCA
  8502.     40h NetWorth EtherNext
  8503.     41h Dataco Scanet
  8504.     42h DEC DEPCA
  8505.     43h C-Net
  8506.     44h Gandalf LANLine
  8507.     45h Apricot built-in
  8508.     46h David Systems Ether-T
  8509.     47h ODI to Packet Driver adapter (see also AX=5100h)
  8510.     48h AMD Am21110-16
  8511.     49h Intel ICD Network controller family
  8512.     4Ah Intel ICD PCL2
  8513.     4Bh Intel ICD PCL2A
  8514.     4Ch AT&T LANPacer
  8515.     4Dh AT&T LANPacer+
  8516.     4Eh AT&T EVB
  8517.     4Fh AT&T StarStation
  8518.     50h SLIP simulated ethernet
  8519.     51h Racal-Interlan NIA310
  8520.     52h Racal-Interlan NISE
  8521.     53h Racal-Interlan NISE30
  8522.     54h Racal-Interlan NI6610
  8523.     55h Ethernet over IP/UDP
  8524.     56h ICL EtherTeam 16
  8525.     57h David Systems
  8526.     58h NCR WaveLAN
  8527.     59h Thomas Contrad TC5045
  8528.     5Ah Russ Nelson's Parallel Port driver
  8529.     5Bh Intell EtherExpress 16
  8530.     5Ch IBMTOKEN
  8531.     5Dh Zenith Z-Note
  8532.     5Eh 3Com 3C509
  8533.     5Fh Mylex LNE390
  8534.     60h Madge Smart Ringnode
  8535.     61h Novell NE2100
  8536.     62h Allied Telesis 1500
  8537.     63h Allied Telesis 1700
  8538.     64h Fujitsu EtherCoupler
  8539.     Class 02h  ProNET-10
  8540.     01h Proteon p1300
  8541.     02h Proteon p1800
  8542.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  8543.     01h IBM Token-Ring Adapter
  8544.     02h Proteon p1340
  8545.     03h Proteon p1344
  8546.     04h Gateway PC-bus
  8547.     05h Gateway AT-bus
  8548.     06h Gateway MCA-bus
  8549.     07h Madge board
  8550.     39h NDIS to Packet Driver adapter
  8551.     47h ODI to Packet Driver adapter
  8552.     Class 04h  Omninet
  8553.     Class 05h  Appletalk
  8554.     01h ATALK.SYS adapter
  8555.     Class 06h  Serial Line
  8556.     01h Clarkson 8250-SLIP
  8557.     02h Clarkson "Multiplexor"
  8558.     03h Eicon Technologies
  8559.     Class 07h  StarLAN (subsumed by Ethernet class)
  8560.     Class 08h  ARCnet
  8561.     01h Datapoint RIM
  8562.     Class 09h  AX.25
  8563.     01h Ottawa PI card
  8564.     02h Eicon Technologies
  8565.     Class 0Ah  KISS
  8566.     Class 0Bh  IEEE 802.3 with 802.2 headers
  8567.     types same as for class 01h
  8568.     Class 0Ch  FDDI with 802.2 headers
  8569.     01h Western Digital
  8570.     02h Frontier Technology
  8571.     Class 0Dh  Internet X.25
  8572.     01h Western Digital
  8573.     02h Frontier Technology
  8574.     03h Emerging Technologies
  8575.     04h The Software Forge
  8576.     05h Link Data Intelligent X.25
  8577.     06h Eicon Technologies
  8578.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  8579.     01h NT LANSTAR/8
  8580.     02h NT LANSTAR/MC
  8581.     Class 0Fh  SLFP (MIT serial specification)
  8582.     01h MERIT
  8583.     Class 10h  PPP (Point-to-Point Protocol)
  8584.     01h 8250/16550 UART
  8585.     02h Niwot Networks synch
  8586.     03h Eicon Technologies
  8587.     Class 11h  802.5 with expanded RIFs
  8588.     types same as for class 3
  8589.     Class 12h  reserved for LCP/NCPs
  8590. Note: class and type numbers are cleared through FTP Software
  8591. --------G-6002-------------------------------
  8592. INT 60 - MDEBUG - SET STATUS
  8593.     AH = 02h
  8594.     DS:SI -> password or a null byte
  8595.     ES = new value for the register SE
  8596.     DI = new value for the register OF
  8597.     CH = new monitor color if nonzero
  8598.     CL = new interpreter color if nonzero
  8599.     BH = new monitor start line if nonzero
  8600.     BL = new interpreter start line if nonzero
  8601.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  8602.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  8603.           if nonzero
  8604.     DH = if nonzero, new basic process number for communication with the
  8605.           drivers (DH = multiplex number for the display driver,
  8606.           DH+1 = multiplex number for the command driver or drivers)
  8607. Return: AX = return code
  8608.         FFFFh call not allowed
  8609.         FFFEh password is invalid
  8610.         FFFDh display mode is invalid
  8611.         0000h successful, status changed
  8612.         else AL = error reasons (see #1950)
  8613. Note:    the values of the registers SE and OF are always changed, the other
  8614.       values are only changed if they are valid
  8615. SeeAlso: AH=00h"MDEBUG"
  8616. Index:    hotkeys;MDEBUG
  8617.  
  8618. Bitfields for MDEBUG error reasons:
  8619. Bit(s)    Description    (Table 1950)
  8620.  0    invalid monitor start line
  8621.  1    invalid interpreter start line
  8622.  2    invalid hotkey
  8623.  3    invalid process number
  8624.  4-7    reserved
  8625. --------N-6002-------------------------------
  8626. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  8627.     AH = 02h
  8628.     AL = interface class
  8629.     BX = interface type
  8630.     DL = interface number
  8631.     DS:SI -> type
  8632.     CX = length of type (0000h for all packets)
  8633.     ES:DI -> receiver function (see #1951)
  8634. Return: CF set on error
  8635.         DH = error code (see #1948)
  8636.     CF clear if successful
  8637.         AX = handle
  8638. SeeAlso: AH=03h"FTP"
  8639.  
  8640. (Table 1951)
  8641. Values packet driver receiver is called with when a packet is received:
  8642.     AX = subfunction
  8643.         00h get packet buffer
  8644.         CX = buffer length
  8645.         DX = lookahead length (v1.10+)
  8646.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  8647.         DI = error flags (class dependent) (v1.10+)
  8648.         Return: ES:DI -> packet buffer
  8649.                 0000h:0000h means throw away packet
  8650.             CX = size of buffer (v1.10+), may be smaller than
  8651.                   incoming data
  8652.         01h copy completed
  8653.         DS:SI -> buffer
  8654.         CX = bytes actually copied (v1.10+)
  8655.     BX = handle
  8656. --------G-6002-------------------------------
  8657. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  8658.     AH = 02h
  8659. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  8660.       Issue 47
  8661. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  8662. --------G-6003-------------------------------
  8663. INT 60 - MDEBUG - POP UP
  8664.     AH = 03h
  8665.     DS:SI -> password or a null byte
  8666.     ES -> new value for the register SE
  8667.     DI -> new value for the register OF
  8668. Return: AX = return code (see #1952)
  8669. SeeAlso: AH=04h"MDEBUG"
  8670.  
  8671. (Table 1952)
  8672. Values for MDEBUG return code:
  8673.  FFFFh    call not allowed
  8674.  FFFEh    password is invalid
  8675.  FFFDh    display mode is invalid
  8676.  else    successful
  8677. --------N-6003-------------------------------
  8678. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  8679.     AH = 03h
  8680.     BX = handle
  8681. Return: CF set on error
  8682.        DH = error code (see #1948)
  8683.     CF clear if successful
  8684. SeeAlso: AH=02h"FTP"
  8685. --------G-6003-------------------------------
  8686. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  8687.     AH = 03h
  8688. Return: ES:BX -> profiling table
  8689. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  8690.       Issue 47
  8691. SeeAlso: AH=04h"SYS_PROF"
  8692. --------N-6004-------------------------------
  8693. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  8694.     AH = 04h
  8695.     DS:SI -> buffer
  8696.     CX = length
  8697. Return: CF set on error
  8698.         DH = error code (see #1948)
  8699.     CF clear if successful
  8700. Note:    the buffer may be modified immediately upon return from this call
  8701. SeeAlso: AH=0Bh
  8702. --------G-6004-------------------------------
  8703. INT 60 - MDEBUG - POP UP
  8704.     AH = 04h
  8705.     DS:SI -> password or a null byte
  8706. Return: AX = return code (see #1952)
  8707. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  8708. --------G-6004-------------------------------
  8709. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  8710.     AH = 04h
  8711. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  8712.       Issue 47
  8713. SeeAlso: AH=03h"SYS_PROF"
  8714. --------N-6005-------------------------------
  8715. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  8716.     AH = 05h
  8717.     BX = handle (optional for v1.10+)
  8718. Return: CF set on error
  8719.        DH = error code (see #1948)
  8720.     CF clear if successful
  8721. --------G-6005-------------------------------
  8722. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  8723.     AH = 05h
  8724.     DS:SI -> password or a null byte
  8725.     BL = new value for the semaphor of MDEBUG
  8726.          00h  enable popup of MDEBUG
  8727.          else disable popup of MDEBUG
  8728. Return: AX = return code
  8729.         FFFEh password is invalid
  8730.         FFFDh display mode is invalid
  8731.         else successful
  8732.         BL = old value of the semaphor of MDEBUG
  8733.         BH = old value of the INT 08h semaphor
  8734.             (this semaphor is always reset after this function)
  8735. --------N-6006-------------------------------
  8736. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  8737.     AH = 06h
  8738.     BX = handle (optional for v1.10+)
  8739.     ES:DI -> buffer
  8740.     CX = length
  8741. Return: CF set on error
  8742.         DH = error code (see #1948)
  8743.     CF clear if successful
  8744.         CX = length
  8745. Note:    copies the local net address associated with the handle into the buffer
  8746. --------G-6006-------------------------------
  8747. INT 60 - MDEBUG - GET PASSWORD STATUS
  8748.     AH = 06h
  8749. Return: AL = status
  8750.         00h password inactive
  8751.         01h password active
  8752. --------N-6007-------------------------------
  8753. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  8754.     AH = 07h
  8755.     BX = handle (optional for v1.10+)
  8756. Return: CF set on error
  8757.         DH = error code (see #1948)
  8758.     CF clear if successful
  8759. --------G-6007-------------------------------
  8760. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  8761.     AH = 07h
  8762. Return: AL = active part for the next popup session of MDEBUG:
  8763.         bit 0: the next popup session will start in the interpreter rather
  8764.           than in the monitor
  8765.         bit 1: the next popup session will sart in the online-help
  8766. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  8767. --------G-6008-------------------------------
  8768. INT 60 - MDEBUG - UNUSED
  8769.     AH = 08h-FFh
  8770. Return: AX = FFFCh
  8771. --------N-600A-------------------------------
  8772. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  8773.     AH = 0Ah
  8774. Return: CF set on error
  8775.         DH = error code (0Bh) (see #1948)
  8776.     CF clear if successful
  8777.         ES:DI -> parameter table (see #1953)
  8778.  
  8779. Format of packet driver parameter table:
  8780. Offset    Size    Description    (Table 1953)
  8781.  00h    BYTE    major revision of packet driver spec driver conforms to
  8782.  01h    BYTE    minor revision of packet driver spec
  8783.  02h    BYTE    length of this structure in bytes
  8784.  03h    BYTE    length of a MAC-layer address
  8785.  04h    WORD    maximum transfer unit, including MAC headers
  8786.  06h    WORD    buffer size for multicast addr
  8787.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  8788.  0Ah    WORD    number of transmit buffers
  8789.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  8790. --------N-600B-------------------------------
  8791. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  8792.     AH = 0Bh
  8793.     DS:SI -> buffer
  8794.     CX = length of buffer
  8795.     ES:DI -> FAR function to call when buffer becomes available (see #1954)
  8796. Return: CF set on error
  8797.         DH = error code (0Bh,0Ch) (see #1948)
  8798.     CF clear if successful
  8799. Notes:    unlike function 04h, the buffer is not available for modification as
  8800.       soon as the call returns; the buffer may be queued by the driver and
  8801.       not processed until later
  8802.     this function has been dropped from v1.10+ of the specification and
  8803.       replaced by function 0Ch
  8804. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  8805.  
  8806. (Table 1954)
  8807. Values packet driver completion function is called with:
  8808.     AX = result
  8809.         00h copy OK
  8810.         nonzero error
  8811.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  8812. --------N-600C-------------------------------
  8813. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  8814.     AH = 0Ch
  8815.     ES:DI -> pointer to IOCB (see #1955)
  8816. Return: CF set on error
  8817.         DH = error code (see #1948)
  8818.     CF clear if successful
  8819. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  8820.  
  8821. Format of packet driver IOCB:
  8822. Offset    Size    Description    (Table 1955)
  8823.  00h    DWORD    pointer to buffer
  8824.  04h    WORD    length of buffer
  8825.  06h    BYTE    flags
  8826.         bit 0: packet driver is finished with IOCB
  8827.         bit 1: application requests upcall when driver completes
  8828.  07h    DWORD    function address for upcall (see #1956)
  8829.  0Bh  4 BYTEs    future gather write
  8830.  0Fh    BYTE    ???
  8831.  10h  8 BYTEs    private driver workspace
  8832.  
  8833. (Table 1956)
  8834. Values completion function is called with:
  8835.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  8836. --------N-600C-------------------------------
  8837. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  8838.     AH = 0Ch
  8839. Return: AL = status
  8840.         00h successful
  8841.         ES:SI -> 6-byte station address
  8842.         02h semaphore service is unavailable
  8843. --------N-600D-------------------------------
  8844. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  8845.     AH = 0Dh
  8846.     ES:DI -> IOCB
  8847. Return: CF set on error
  8848.         DH = error code (see #1948)
  8849.     CF clear if successful
  8850. SeeAlso: AH=0Ch"Packet Driver"
  8851. --------N-6011-------------------------------
  8852. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  8853.     AH = 11h
  8854.     AL = drive number or 0
  8855.     DX = number of seconds to wait
  8856.     ES:SI = Ethernet address or 0
  8857.     DS:BX -> 31-byte ASCIZ semaphore name
  8858. Return: AL = status (see #1957)
  8859. SeeAlso: AH=12h,AH=13h
  8860.  
  8861. (Table 1957)
  8862. Values for 3com semaphore status:
  8863.  00h    successful
  8864.  01h    timeout
  8865.  02h    server not responding
  8866.  03h    invalid semaphore name
  8867.  04h    semaphore list is full
  8868.  05h    invalid drive ID
  8869.  06h    invalid Ethernet address
  8870.  07h    not logged in
  8871.  08h    write to network failed
  8872.  09h    semaphore already logged for this CPU
  8873. --------N-6012-------------------------------
  8874. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  8875.     AH = 12h
  8876.     AL = drive number or 00h
  8877.     ES:SI = Ethernet address or 0000h:0000h
  8878.     DS:BX -> 31-byte ASCIZ semaphore name
  8879. Return: AL = status (see also #1957)
  8880.         01h semaphore currently locked by another PC
  8881. Note:    unlike function 11h, this function returns immediately
  8882. SeeAlso: AH=11h,AH=13h
  8883. --------N-6013-------------------------------
  8884. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  8885.     AH = 13h
  8886.     AL = drive number or 00h
  8887.     ES:SI = Ethernet address or 0000h:0000h
  8888.     DS:BX -> 31-byte ASCIZ semaphore name
  8889. Return: AL = status (see also #1957)
  8890.         01h semaphore not locked
  8891. SeeAlso: AH=11h,AH=12h
  8892. --------N-6014-------------------------------
  8893. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  8894.     AH = 14h
  8895.     BX = handle (optional for v1.10+)
  8896.     CX = mode (see #1958)
  8897. Return: CF set on error
  8898.        DH = error code (01h,08h) (see #1948)
  8899.     CF clear if successful
  8900. SeeAlso: AH=15h
  8901.  
  8902. (Table 1958)
  8903. Values for packet driver receive mode:
  8904.  01h    turn off receiver
  8905.  02h    receive only packets sent to this interface
  8906.  03h    mode 2 plus broadcast packets
  8907.  04h    mode 3 plus limited multicast packets
  8908.  05h    mode 3 plus all multicast packets
  8909.  06h    all packets
  8910.  07h    raw mode for serial line only (v1.10+)
  8911. --------N-6015-------------------------------
  8912. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  8913.     AH = 15h
  8914.     BX = handle (optional for v1.10+)
  8915. Return: CF set on error
  8916.         DH = error code (01h) (see #1948)
  8917.     CF clear if successful
  8918.         AX = receive mode (see #1958)
  8919. SeeAlso: AH=14h
  8920. --------N-6016-------------------------------
  8921. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  8922.     AH = 16h
  8923.     ES:DI -> multicast list
  8924.     CX = length of list in bytes
  8925. Return: CF set on error
  8926.         DH = error code (06h,09h,0Eh) (see #1948)
  8927.     CF clear if successful
  8928. SeeAlso: AH=17h
  8929. --------N-6017-------------------------------
  8930. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  8931.     AH = 17h
  8932. Return: CF set on error
  8933.         DH = error code (06h,09h) (see #1948 at AX=01FFh)
  8934.     CF clear if successful
  8935.         ES:DI -> multicast addresses (do not modify)
  8936.         CX = bytes of multicast addresses currently in use
  8937. SeeAlso: AH=16h
  8938. --------N-6018-------------------------------
  8939. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  8940.     AH = 18h
  8941.     BX = handle (optional for v1.10+)
  8942. Return: CF set on error
  8943.         DH = error code (01h) (see #1948)
  8944.     CF clear if successful
  8945.         DS:SI -> statistics (see #1959)
  8946.  
  8947. Format of packet driver statistics:
  8948. Offset    Size    Description    (Table 1959)
  8949.  00h    DWORD    packets in
  8950.  04h    DWORD    packets out
  8951.  08h    DWORD    bytes in
  8952.  0Ch    DWORD    bytes out
  8953.  10h    DWORD    errors in
  8954.  14h    DWORD    errors out
  8955.  18h    DWORD    packets dropped
  8956. --------N-6019-------------------------------
  8957. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  8958.     AH = 19h
  8959.     ES:DI -> address
  8960.     CX = length of address
  8961. Return: CF set on error
  8962.         DH = error code (0Dh,0Eh) (see #1948)
  8963.     CF clear if successful
  8964.         CX = length
  8965. --------N-601A-------------------------------
  8966. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  8967.     AH = 1Ah
  8968.     DS:SI -> buffer
  8969.     CX = length of buffer
  8970. Return: CF set on error
  8971.         DH = error code (see #1948 at AX=01FFh)
  8972.     CF clear if successful
  8973. SeeAlso: AH=1Ch
  8974. --------N-601B-------------------------------
  8975. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  8976.     AH = 1Bh
  8977. Return: CF set on error
  8978.         DH = error code (see #1948)
  8979.     CF clear if successful
  8980. SeeAlso: AH=1Ch
  8981. --------N-601C-------------------------------
  8982. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  8983.     AH = 1Ch
  8984.     DS:SI -> buffer
  8985.     CX = length of buffer
  8986.     DX = timeout in clock ticks
  8987. Return: CF set on error
  8988.         DH = error code (see #1948 at AX=01FFh)
  8989.     CF clear if successful
  8990.         CX = number of bytes transferred to buffer
  8991. SeeAlso: AH=1Ah,AH=1Bh
  8992. --------a-60AD-------------------------------
  8993. INT 60 - AccessDOS - API
  8994.     AH = ADh
  8995.     AL = function
  8996.         E1h ???
  8997.         Return: AX = ???
  8998.         E2h get configuration
  8999.         Return: BX:AX -> configuration data
  9000. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  9001.       Development Center which provides extensions for keyboard, mouse,
  9002.       and sound access by the visually, hearing, or motor-control
  9003.       impaired.
  9004. Range:    INT 60 to INT 66, selected by scanning for 0000h:0000h vector
  9005. --------N-60E9-------------------------------
  9006. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  9007.     AH = E9h
  9008.     ???
  9009. Return: ???
  9010. --------!---Section--------------------------
  9011.